log4j.xml 配备
log4j.xml 配置?xml?version1.0?encodingUTF-8?????!DOCTYPE?log4j:configuration?SYSTEM?log4j
log4j.xml 配置
- <?xml?version="1.0"?encoding="UTF-8"?>????
- <!DOCTYPE?log4j:configuration?SYSTEM?"log4j.dtd">????
- <log4j:configuration?xmlns:log4j='http://jakarta.apache.org/log4j/'?>????
- ??????
- ????<appender?name="myConsole"?class="org.apache.log4j.ConsoleAppender">????
- ????????<layout?class="org.apache.log4j.PatternLayout">????
- ????????????<param?name="ConversionPattern"??????
- ????????????????value="[%d{dd?HH:mm:ss,SSS\}?%-5p]?[%t]?%c{2\}?-?%m%n"?/>????
- ????????</layout>????
- ????????<!--过滤器设置输出的级别-->????
- ????????<filter?class="org.apache.log4j.varia.LevelRangeFilter">????
- ????????????<param?name="levelMin"?value="debug"?/>????
- ????????????<param?name="levelMax"?value="warn"?/>????
- ????????????<param?name="AcceptOnMatch"?value="true"?/>????
- ????????</filter>????
- ????</appender>????
- ????
- ????<appender?name="myFile"?class="org.apache.log4j.RollingFileAppender">??????
- ????????<param?name="File"?value="D:/output.log"?/><!--?设置日志输出文件名?-->????
- ????????<!--?设置是否在重新启动服务时,在原有日志的基础添加新日志?-->????
- ????????<param?name="Append"?value="true"?/>????
- ????????<param?name="MaxBackupIndex"?value="10"?/>????
- ????????<layout?class="org.apache.log4j.PatternLayout">????
- ????????????<param?name="ConversionPattern"?value="%p?(%c:%L)-?%m%n"?/>????
- ????????</layout>????
- ????</appender>????
- ??????
- ??
- ????<appender?name="activexAppender"?class="org.apache.log4j.DailyRollingFileAppender">????
- ????????<param?name="File"?value="E:/activex.log"?/>?????
- ????????<param?name="DatePattern"?value="'.'yyyy-MM-dd'.log'"?/>?????
- ????????<layout?class="org.apache.log4j.PatternLayout">????
- ?????????<param?name="ConversionPattern"?????
- ????????????value="[%d{MMdd?HH:mm:ss?SSS\}?%-5p]?[%t]?%c{3\}?-?%m%n"?/>????
- ????????</layout>?????
- ????</appender>????
- ??????
- ??
- ????<!--?指定logger的设置,additivity指示是否遵循缺省的继承机制-->????
- ????<logger?name="com.runway.bssp.activeXdemo"?additivity="false">????
- ????????<priority?value?="info"/>?????
- ????????<appender-ref?ref="activexAppender"?/>?????
- ????</logger>????
- ????
- ????<!--?根logger的设置-->????
- ????<root>????
- ????????<priority?value?="debug"/>????
- ????????<appender-ref?ref="myConsole"/>????
- ????????<appender-ref?ref="myFile"/>??????
- ????</root>????
- </log4j:configuration>???
配置参数说明:
(1). 输出方式appender一般有5种:
[plain]?view plaincopy
- org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)??
- org.apache.log4j.ConsoleAppender?(控制台)????
- org.apache.log4j.FileAppender?(文件)??
- org.apache.log4j.DailyRollingFileAppender?(每天产生一个日志文件)??
- org.apache.log4j.WriterAppender?(将日志信息以流格式发送到任意指定的地方)??
?
(2). 日记记录的优先级priority,优先级由高到低分为?
? ? ? ? ??
[plain]?view plaincopy
- <span?style="white-space:pre">??</span>????OFF?,FATAL?,ERROR?,WARN?,INFO?,DEBUG?,ALL。??
- ?<span?style="white-space:pre">?</span>????Log4j建议只使用FATAL?,ERROR?,WARN?,INFO?,DEBUG这五个级别。??
(3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
[plain]?view plaincopy
- %c????????输出所属类的全名,可在修改为?%d{Num}?,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)??
- %d???????输出日志时间其格式为?%d{yyyy-MM-dd?HH:mm:ss,SSS},可指定格式?如?%d{HH:mm:ss}??
- %l????????输出日志事件发生位置,包括类目名、发生线程,在代码中的行数??
- %n???????换行符??
- %m??????输出代码指定信息,如info(“message”),输出message??
- %p???????输出优先级,即?FATAL?,ERROR?等??
- %r????????输出从启动到显示该log信息所耗费的毫秒数??
- %t????????输出产生该日志事件的线程名??
xml配置文件详解:
?
[plain]?view plaincopy
- <?xml?version="1.0"?encoding="UTF-8"??>??
- <!DOCTYPE?log4j:configuration?SYSTEM?"log4j.dtd">??
- ????????????
- log4j:configuration?(root?element)???
- ????xmlns:log4j?[#FIXED?attribute]?:?定义log4j的名字空间,取定值"http://jakarta.apache.org/log4j/"??
- ????appender?[*?child]?:?一个appender子元素定义一个日志输出目的地??
- ??????????
- ????????name?[#REQUIRED?attribute]?:?定义appender的名字,以便被后文引用??
- ????????class?[#REQUIRED?attribute]?:?定义appender对象所属的类的全名??
- ????????param?[*?child]?:?创建appender对象时传递给类构造方法的参数??
- ????????layout?[??child]?:?layout元素定义与某一个appender相联系的日志格式化器。??
- ??
- ??
- ????????????????class?[#REQUIRED?attribute]?:?定义layout对象所属的类的全名??
- ????????????????param?[*?child]?:?创建layout对象时传递给类构造方法的参数??
- ??
- ??
- ????logger?[*?child]?:?一个logger子元素定义一个日志写出器??
- ??
- ??
- ????????name?[#REQUIRED?attribute]?:?定义logger的名字,以便被后文引用??
- ????????additivity?[#ENUM?attribute]?:?取值为"true"(默认)或者"false",是否继承父logger的属性??
- ????????level?[??child]?:?定义该logger的日志级别??
- ????????appender-ref?[*?child]?:?定义该logger的输出目的地??
- ??
- ??
- ????root?[??child]?:?root子元素定义了root?logger???
- ????????param?[*?child]?:?创建root?logger对象时传递给类构造方法的参数??
- ????????level?[??child]?:?定义root?logger的日志级别??
- ????????????class?[#IMPLIED?attribute]?:?定义level对象所属的类,默认情况下是"org.apache.log4j.Level类??
- ????????????value?[#REQUIRED?attribute]?:?为level对象赋值。可能的取值从小到大依次为"all"、"debug"、"info"、"warn"、"error"、"fatal"和"off"。当值为"off"???????????????????????????????时表示没有任何日志信息被输出??
- ????????????param?[*?child]?:?创建level对象时传递给类构造方法的参数??
- ????????????appender-ref?[*?child]?:元素引用一个appender元素的名字,为logger对象增加一个appender。??
- ???
?
param元素没有子元素
在xml文件中配置appender和layout
创建不同的Appender对象或者不同的Layout对象要调用不同的构造方法。可以使用param子元素来设定不同的参数值。
创建ConsoleAppender对象
ConsoleAppender的构造方法不接受其它的参数。
?
[plain]?view plaincopy
- <appender?name="console.log"?style="margin: 0px !important; padding: 0px 3px 0px 10px !important; border-style: none none none solid; border-left-width: 3px; border-left-color: #6ce26c; color: inherit; line-height: 18px;">????...?...??
- ??</layout>??
- </appender>??
? ? ? ? ??
?
创建FileAppender对象
可以为FileAppender类的构造方法传递两个参数:File表示日志文件名;Append表示如文件已存在,是否把日志追加到文件尾部,可能取值为"true"和"false"(默认)。
?
[plain]?view plaincopy
- <appender?name="file.log"?style="margin: 0px !important; padding: 0px 3px 0px 10px !important; border-style: none none none solid; border-left-width: 3px; border-left-color: #6ce26c; color: inherit; line-height: 18px;">??<param?name="Append"?value="false"?/>??
- ??<layout?...?>??
- ????...?...??
- ??</layout>??
- </appender>??
?
创建RollingFileAppender对象
除了File和Append以外,还可以为RollingFileAppender类的构造方法传递两个参数:MaxBackupIndex备份日志文件的个数(默认是1个);MaxFileSize表示日志文件允许的最大字节数(默认是10M)。
?
[plain]?view plaincopy
- <appender?name="rollingFile.log"?style="margin: 0px !important; padding: 0px 3px 0px 10px !important; border-style: none none none solid; border-left-width: 3px; border-left-color: #6ce26c; color: inherit; line-height: 18px;">??<param?name="Append"?value="false"?/>??
- ??<param?name="MaxBackupIndex"?value="2"?/>??
- ??<param?name="MaxFileSize"?value="1024"?/>??
- ??<layout?...?>??
- ????...?...??
- ??</layout>??
- </appender>??
? ? ? ? ??
?
创建PatternLayout对象
可以为PatternLayout类的构造方法传递参数ConversionPattern。
?
[plain]?view plaincopy
- <layout?style="margin: 0px !important; padding: 0px 3px 0px 10px !important; border-style: none none none solid; border-left-width: 3px; border-left-color: #6ce26c; color: inherit; line-height: 18px;"></layout>??