log4j 分不同目录输出-xml版

14 篇文章 0 订阅

据我目前的功力,也就是只能分2个不同的地方,且这2个地方互不干扰,相互独立。

 

如果这2者是相互重复的,那么这个就太容易了啊。直接设多个appender,然后file后面的地址写不一样就行了。


但是要考虑到,它们受level的影响,指定某个级别的level以上的level全是输出的。

 

下面将举个例子,利用的就是logger 和 root的区别!

 

完整的log4j.xml配置如下:

 

 

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

<log4j:configuration>
  
  
  <appender name="DebugAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="D:/UA/UADebugLogs/debug.log"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ISO8601}|%-5p|%c|%t|%m%n"/>
    </layout>
  </appender>


  <appender name="InfoAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="D:/UA/UACognosLogs/result.log"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ISO8601}|%-5p|%c|%t|%m%n"/>
    </layout>
  </appender>
  


  <!-- These are the possible log levels - debug | info | warn | error | fatal  -->
  
  <!-- client -->
  <logger name="result" additivity="false"> 
    <level value ="info"/>
    <appender-ref ref="InfoAppender"/>
  </logger> 
  
  
  
 
  <root>
    <priority value="debug"/>
    <appender-ref ref="DebugAppender"/>
  </root>
</log4j:configuration>
 

解释如下:1、root设的是全局的level,然后logger那段是要继承root的设置的,然而在我们这我们不想继续它,将additivity设为false即可。

 

2、对于file=地址,这里的地址可以用相对地址,不过在打包成jar后一般都不认识了。我暂时还没找到完美的方法,只能傻傻的用绝对路径,即D:/UA/UADebugLogs/debug.log。或者D:\\UA\\UADebugLogs\\debug.log。

 

3、对于DailyRollingFileAppender而言,当天的日志文件是不会加上日期的,只有昨天以前的文件前面才会加上日期。这一点请注意。

 

 

4、对于Logger的name的更深的理解:

 

 

private Logger logger=Logger.getLogger("result")
和
private Logger logger=Logger.getLogger(UACognos.class.getName())
 

一般我们都习惯用第2种方法,然后在log4j的输出文件中写的就是这个类的名字。而且这样写就意味必须继承root的设置。如果你不想继承root的话,那么就得像第一种写法一样,用指定的特殊的logger。

 

 

关于2、3两点,其实都可以写一博文来解释。会在csdn上写的。

 

 

refurl:1、http://ankyhe.iteye.com/blog/1143927

2、http://willow-na.iteye.com/blog/347340

3、http://zhangxiang390.iteye.com/blog/258455

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值