将日志保存到文件
- 添加日志输出目的地(Appender:附加器)
在Appender节点下添加:
<File name="logfile" fileName="C:/Users/Administrator/Desktop/my.log">
<PatternLayout pattern="%d{HH:mm:ss} %level : %msg %l%n" />
</File>
其中”name”为目的地名称,”fileName”为输出的文件名
- 在Loggers节点下添加:
<Logger name="mylog" level="info" additivity="false">
<AppenderRef ref="logfile" />
</Logger
其中”name”为目的地名称,”level”为日志等级,”additivity”为是否继承父级的目的地,默认是true。如果设为false则只会在自己的目的地输出,这里设为false。
关于additivity的举例:
Appender下有两个输出源,一个是控制台,一个是文件,如下:
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} %level : %msg %l%n" />
</Console>
<File name="logfile" fileName="C:/Users/Administrator/Desktop/my.log">
<PatternLayout pattern="%d{HH:mm:ss} %level : %msg %l%n" />
</File>
</Appenders>
Loggers下有两个日志,mylog(自定义的)和Root(根日志)
<Loggers>
<Logger name="mylog" level="info" additivity="false">
<AppenderRef ref="logfile" />
</Logger>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
additivity=true时,控制台输出如下
additivity=false时,因为只会在自己的输出源输出,也就是只会输出到文件,所以控制台不会输出,只有跟日志Root的输出。控制输出如下:
哈哈
日志文件输出如下
21:10:58 INFO : 信息 log4j.Main.main(Main.java:10)
21:10:58 WARN : 警告 log4j.Main.main(Main.java:11)
21:10:58 ERROR : 错误 log4j.Main.main(Main.java:12)