当前位置 博文首页 > 适己而忘人者,人之所弃;克己而立人者,众之所戴。:知识积累(
Log4j主要有两种配置格式 log4j.properties和log4j.xml,默认是先找log4j.xml,找不到log4j.xml再去找log4j.properties的。当然前提是没有自己定义log4j.configuration。?
一.log4j中有五级logger :
?? FATAL 0 ,ERROR 3 ,WARN 4 ,INFO 6 ,DEBUG 7
二. 配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中:
level:是日志记录的优先级。
appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
1.配置日志信息输出目的地Appender,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(输出到控制台),
org.apache.log4j.FileAppender(输出到文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
2.配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN
Log4j提供的layout有以下4种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),其灵活性表现在:
??? #%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
??? #%r 输出自应用启动到输出该log信息耗费的毫秒数
??? #%c 输出所属的类目,通常就是所在类的全名
??? #%t 输出产生该日志事件的线程名
??? #%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
??? #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比
???? 如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
??? #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
??? 举例:Testlog4.main(TestLog4.java:10)
??? #%d {yyyy-MM-dd HH:mm:ss,SSS};
??? #%m 消息体
??? #%F 类名(*.java)
??? #%L 仅仅是发生的行号(如:18)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
自己参考其他网友的资料写的配置文件
log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false">
?<appender name="FILE" class="org.apache.log4j.FileAppender">
??<param name="File" value="${webapp.root}/WEB-INF/log/system.log"/>
??<param name="Append" value="false"/>
??<param name="Threshold" value="info"/>
??<layout class="org.apache.log4j.PatternLayout">
???<param name="ConversionPattern" value="%d [%-5p] [%c{1}] - %m%n"/>
??</layout>
?</appender>
?<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
??<param name="Target" value="System.out"/>
??<param name="Threshold" value="info"/>
??<layout class="org.apache.log4j.PatternLayout">
???<param name="ConversionPattern" value="%d{ABSOLUTE} [%-5p] [%c{1}] %m%n"/>
??</layout>
?</appender>
?<appender name="DAILYFILE" class="org.apache.log4j.DailyRollingFileAppender">
??<param name="File" value="${webapp.root}/WEB-INF/log/daily_system.log"/>
??<param name="Append" value="true"/>
??<param name="Threshold" value="info"/>
??<param name="DatePattern" value="'.'yyyy-MM-dd"/>
??<layout class="org.apache.log4j.PatternLayout">
???<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
??</layout>
?</appender>
?<appender name="DEBUG_FILE" class="org.apache.log4j.FileAppender">
??<param name="File" value="${webapp.root}/WEB-INF/log/debug.log"/>
??<param name="Append" value="false"/>
??<param name="Threshold" value="info" />
??<layout class="org.apache.log4j.PatternLayout">
???<param name="ConversionPattern" value="%d [%-5p] [%c{1}] - %m%n"/>
??</layout>
?</appender>
?<appender name="WARN_FILE" class="org.apache.log4j.FileAppender">
??<param name="File" value="${webapp.root}/WEB-INF/log/warning.log"/>
??<param name="Append" value="false"/>
??<param name="Threshold" value="warn" />
??<layout class="org.apache.log4j.PatternLayout">
???<param name="ConversionPattern" value="%d [%-5p] [%c{1}] - %m%n"/>
??</layout>
?</appender>
?<appender name="DEBUG_HTML" class="org.apache.log4j.FileAppender">
??<param name="File" value="${webapp.root}/WEB-INF/log/debug.html"/>
??<param name="Append" value="false"/>
??<param name="Threshold" value="info"/>
??<layout class="org.apache.log4j.HTMLLayout">
???<param name="Title" value="debug html log"/>
??</layout>
?</appender>
?<logger name="com.fullproject">
??<level value="debug"/>
??<appender-ref ref="DEBUG_FILE"/>
?</logger>
?<logger name="org.springframework">
??<level value="warn"/>
??<appender-ref ref="WARN_FILE"/>
?</logger>
?<logger name="org.hibernate">
??<level value="warn"/>
??<appender-ref ref="WARN_FILE"/>
?</logger>
?<root>
??<level value="info"/>
??<appender-ref ref="CONSOLE"/>
??<appender-ref ref="FILE"/>
??<appender-ref ref="DEBUG_HTML"/>
??<appender-ref ref="DAILYFILE"/>
?</root>
</log4j:configuration>
解释:
xml格式的log4j配置文件需要使用org.apache.log4j.html.DOMConfigurator.configure()方法来
读入.对xml文件的语法定义可以在log4j的发布包中找到:org/apache/log4j/xml/log4j.dtd.?
Xml的一个配置文件:sample1.xml?
说明:?
①xml配置文件的头部包括两个部分:xml声明和dtd声明.头部的格式如下:?
②log4j:configuration (root element)?
xmlns:log4j [#FIXED attribute]: 定义log4j的名字空间,取定值"http://jakarta.apache.org/log4j/"?
<param name="Append" value="false" />false表示重启程序之后,不会把日志添加到文件末尾,取而代之是清空原来日志,写入新的日志.true则是会把新日志添加到文件末尾
<param name="Threshold" value="info" />表示这个appender只显示value以上级别的日志