log4j.xml配置

来源:互联网 发布:土地确权登记软件 编辑:程序博客网 时间:2024/06/03 20:27

log4j的支持两种类型的配置文件log4j.properties和log4j.xml

xml格式比properties的功能更为强大些。 例如, 可以通过filter指定日志打印的级别, 详见以下输出到控制台的配置

log4j推荐使用的4个级别的日志:error>warn>info>debug 

特别提醒:

a. 以下提到的通道即appender节点
b. 在appender节点中的子节点需要按照以下顺序罗列,否则会提示错误: errorHandler?,param*,layout?,filter*,appender-ref*
c. 一定要包含root节点, 否则会打印红色日志, 要求初始化log4j日志系统
d. 通道要在root中引用才有效

1. 基本元素:

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL  %r 输出自应用启动到输出该log信息耗费的毫秒数%c 输出所属的类目,通常就是所在类的全名. eg: com.foundersc.log.Demo1%t 输出产生该日志事件的线程名%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”%d 输出日志打印时间,可以指定时间格式,     eg:        %d{yyy MMM dd HH:mm:ss}: 2017 六月 03 14:38:35        %d{yyy MM dd HH:mm:ss}: 2017 06 03 14:44:58%l 输出日志事件的发生位置,包括方法全限定名、在代码中的行数。eg:com.foundersc.log.Demo1.info(Demo1.java:15)%m 输出日志内容

2. 日志输出目的地及其输出方式, 如:控制台, 文件

org.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

3. 常用的节点标签:

<!-- name:相当于id, 该日志通道的唯一标识, class:该通道使用的日志输出方式 --> <appender name="" class=""></appender><!-- 暂不介绍 --><logger name="" additivity="false"></logger><!-- 暂不介绍 --><category name="" additivity="false"></category>

4.日志输出到控制台

<appender name="console" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8"/><!-- 打印日志的样式 --><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{yyy MM dd HH:mm:ss} %t %c %l %n" /></layout><!--滤镜设置输出的级别范围--><filter class="org.apache.log4j.varia.LevelRangeFilter"><!-- 输出的最低级别日志 --><param name="levelMin" value="debug" /><!-- 输出的最高级别日志 --><param name="levelMax" value="info" /></filter></appender>


5. 日志输出到指定文件:

<appender name="file" class="org.apache.log4j.RollingFileAppender">    <param name="Encoding" value="UTF-8"/><!-- 指定日志输出文件,如果不是绝对路径,则以项目的根目录为当前目录 --><param name="file" value="E:/java/eclipse_logs/file.log" /><!-- 重启服务时是否覆盖原有文件内容。 true:在原有日志的基础上追加内容, false:新日志覆盖原有的日志 --><param name="append" value="false" /><!-- MaxBackupIndex:查询资料解释为日志备份的数量, 暂时还未发现实际的作用 --><param name="MaxBackupIndex" value="10" /><!-- 打印日志的格式 --><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%p (%c:%L)- %m%n" /></layout></appender>


6. 不同级别的日志输出到不同的文件中: 主要是用filter使最大级别和最小级别一样,并指定日志文件

<appender name="info-file" class="org.apache.log4j.RollingFileAppender"><param name="File" value="info.log" /><param name="Append" value="true" /><param name="MaxFileSize" value="500KB" /><param name="MaxBackupIndex" value="2" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{yyy MM dd HH:mm:ss} %t %c %l %n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="LevelMax" value="INFO" /><param name="LevelMin" value="INFO" /></filter></appender>


7. 在root中引用要使用的日志通道, 否则日志系统无效, 且会打印日志要求初始化log4j系统

<root>    <level value="debug"/>    <appender-ref ref="console" /></root>


8. log4j.xml 命名空间及其根

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"></log4j:configuration>