log4j.xml输出日志调试过程

来源:互联网 发布:数据标准化和归一化 编辑:程序博客网 时间:2024/05/21 06:13

现在业务系统运行也有日志输出,读的是log4j.properties,配置如下:

#-------------------------------

log4j.rootCategory=DEBUG, stdout
#每天输出一个日志
log4j.appender.stdout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d - %m%n
#%-d{yyyy-MM-dd HH:mm:ss,SSS}
%d 输出日志时间点的日期或时间
#%m 输出代码中指定的消息
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%c 输出所属的类目,通常就是所在类的全名
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-ddHH:mm:ss} - %p - %m%n
#输出文件的名字
log4j.appender.stdout.File=E:\\tomcatLog\\test.log
#日志优先级别由低到高 DEBUG  INFO WARN  ERROR  FATAL
log4j.appender.stdout.Threshold=DEBUG

#---------------------------

描述:系统所有输出日志都写到文件E:\\tomcatLog\\test.log,不能更具日志debug,info,warn,error和fatal级别分别输出到不同的文件。

 

在网上查询log4j.xml,然后修改相关配置,配置如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM"log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

 

<!--debug日志输出配置-->

 <appender name="debug"
  class="org.apache.log4j.DailyRollingFileAppender">
  <paramname="File" value="D:/data/programe/cgt/log/debug.txt"/>
  <paramname="Append" value="true" />
  <layoutclass="org.apache.log4j.PatternLayout">
   <paramname="ConversionPattern" value="%d [%t] %p - %m%n"/>
  </layout>
  <filterclass="org.apache.log4j.varia.LevelRangeFilter">
   <paramname="LevelMax" value="DEBUG"/><!--过滤只输出DEBUG级别日志-->
   <paramname="LevelMin" value="DEBUG" />
  </filter>

 </appender>

 

<!--infor日志输出配置-->

 <appender name="info"
  class="org.apache.log4j.DailyRollingFileAppender">
  <paramname="File" value="D:/data/programe/cgt/log/info.txt"/>
  <paramname="Append" value="true" />
  <layoutclass="org.apache.log4j.PatternLayout">
   <paramname="ConversionPattern" value="%d [%t] %p - %m%n"/>
  </layout>
  <filterclass="org.apache.log4j.varia.LevelRangeFilter">
   <paramname="LevelMax" value="INFO" />
   <paramname="LevelMin" value="INFO" />
  </filter>

 </appender>

<!--warn日志输出配置-->
 <appender name="warn"
  class="org.apache.log4j.DailyRollingFileAppender">
  <paramname="File" value="D:/data/programe/cgt/log/warn.txt"/>
  <paramname="Append" value="true" />
  <layoutclass="org.apache.log4j.PatternLayout">
   <paramname="ConversionPattern" value="%d [%t] %p - %m%n"/>
  </layout>
  <filterclass="org.apache.log4j.varia.LevelRangeFilter">
   <paramname="LevelMax" value="WARN" />
   <paramname="LevelMin" value="WARN" />
  </filter>

 </appender>

 

<!--error日志输出配置-->

 <appender name="error"
  class="org.apache.log4j.DailyRollingFileAppender">
  <paramname="File" value="D:/data/programe/cgt/log/error.txt"/>
  <paramname="Append" value="true" />
  <layoutclass="org.apache.log4j.PatternLayout">
   <paramname="ConversionPattern" value="%d [%t] %p - %m%n"/>
  </layout>
  <filterclass="org.apache.log4j.varia.LevelRangeFilter">
   <paramname="LevelMax" value="ERROR" />
   <paramname="LevelMin" value="ERROR" />
  </filter>

 </appender>

 

<!--fatal日志输出配置-->

 <appender name="fatal"
  class="org.apache.log4j.DailyRollingFileAppender">
  <paramname="File" value="D:/data/programe/cgt/log/fatal.txt"/>
  <paramname="Append" value="true" />
  <layoutclass="org.apache.log4j.PatternLayout">
   <paramname="ConversionPattern" value="%d [%t] %p - %m%n"/>
  </layout>
  <filterclass="org.apache.log4j.varia.LevelRangeFilter">
   <paramname="LevelMax" value="FATAL" />
   <paramname="LevelMin" value="FATAL" />
  </filter>

 </appender>


 <root>
  <priorityvalue="debug"/><!--日志输出最低级别-->
  <appender-refref="debug"/><!--debug日志输出-->
  <appender-refref="info"/><!--info日志输出-->
  <appender-refref="warn"/><!--warn日志输出-->
  <appender-refref="error"/><!--error日志输出-->
  <appender-refref="fatal"/><!--fatal日志输出-->
 </root>

</log4j:configuration>

 

这样就可以把系统不同级别的输出到不同的文件了。

 

一点想法【个人观点】:

log4j.properties:使用这个配置,所有输出都输出到一个文件中,这样在系统调试过程比较合适,这样可以跟踪业务流程;

log4j.xml:使用这个配置不同级别的日志输出到不同的文件夹,比较适合于系统正式上线运行阶段,这个可以很快的定位到错误所在,但要求必须熟悉系统流程,看到异常日志时能知道问题是出到哪一块了。

 

 

如果把log4j.xml和log4j.properties都放到classes文件加下,系统会自动先去查找log4j.xml配置文件,如果log4j.xml存在,那么系统日志将按照log4j.xml配置输出;不过log4j.xml不存在,则查找log4j.properties文件。

原创粉丝点击