知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

log4j--分包输出日志

发布时间:2014-09-05 15:39:24作者:知识屋

最近由于业务上出现一些莫名其妙的误删除数据,今天研究了下log4j分包输出,想用log4j来记录具体哪些数据被误删除了。

具体做法是:新建一个包,然后再包下建一个新class,然后在class里面记录被删除的数据,在log4j.xml里配置指向此新包的输出文件。


在test工程下实验了一下:

log4j.xml:

[html] 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
 
    <appender name="Console" class="org.apache.log4j.ConsoleAppender"> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t]  %c{1} : %L - %m%n"/> 
    </layout>      
    </appender> 
     
    <appender name="File" class="org.apache.log4j.RollingFileAppender"> 
        <param name="File" value="D:/log4j/test.log"/> 
        <param name="MaxFileSize" value="1MB"/> 
        <param name="MaxBackupIndex" value="10"/> 
        <param name="Append" value="true" /> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n"/> 
        </layout> 
    </appender> 
     
    <appender name="File1" class="org.apache.log4j.RollingFileAppender"> 
        <param name="File" value="D:/log4j/test1.log"/> 
        <param name="MaxFileSize" value="1MB"/> 
        <param name="MaxBackupIndex" value="10"/> 
        <param name="Append" value="true" /> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n"/> 
        </layout> 
    </appender> 
 
  <logger name="org"> 
    <level value="WARN"/> 
  </logger> 
  <logger name="org.apache"> 
    <level value="WARN"/> 
  </logger> 
  <logger name="com.zznode.log"> 
    <level value="DEBUG"/>   
  </logger> 
  <logger name="com.zznode.test"> 
    <level value="DEBUG"/> 
    <appender-ref ref="File1" /> 
  </logger> 
  <logger name="rule"> 
    <level value="INFO"/> 
  </logger> 
  <logger name="org.springframework.jdbc.core"> 
    <level value="info"/> 
  </logger> 
   
    <root> 
        <level value ="DEBUG" /> 
        <appender-ref ref="Console" /> 
        <appender-ref ref="File" /> 
    </root> 
 
</log4j:configuration> 

Main方法:

[java] 
package com.zznode.log; 
 
import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 
import org.apache.log4j.xml.DOMConfigurator; 
 
import com.zznode.test.Test; 
 
/**
 * @desc:
 * @since Nov 8, 2012
 * @author chaisson 
 *
 * <p>
 */ 
public class Log4jApp { 
     
    public void printLog() { 
        Logger log = Logger.getLogger(Log4jApp.class.getClass()); 
        log.info("测试info"); 
        log.debug("测试debug"); 
        log.error("测试error"); 
    } 
     
     public static void main(String[] args) { 
 
           DOMConfigurator.configure("D:/workspace/Test/log4j.xml"); 
           //PropertyConfigurator.configure("D:/workspace/Test/log4j.properties");   
 
           Log4jApp app = new Log4jApp(); 
           app.printLog(); 
            
           Test test = new Test(); 
           test.printLog(); 
       } 

工程结构:

输出结果:


其中Eclipse 的Console:

[plain] 
14:41:43,858  INFO Class:27 - 测试info 
  14:41:43,860 DEBUG Class:28 - 测试debug 
  14:41:43,860 ERROR Class:29 - 测试error 
  14:41:43,861 DEBUG Test:17 - Test.java debug 
  14:41:43,861  INFO Test:18 - Test.java info 
test.log:

[plain] 
2012-11-08 14:41:43.858 INFO  [main] Class - 测试info 
  2012-11-08 14:41:43.860 DEBUG [main] Class - 测试debug 
  2012-11-08 14:41:43.860 ERROR [main] Class - 测试error 
  2012-11-08 14:41:43.861 DEBUG [main] Test - Test.java debug 
  2012-11-08 14:41:43.861 INFO  [main] Test - Test.java info 
test1.log:
[plain] 
2012-11-08 14:41:43.861 DEBUG [main] Test - Test.java debug 
  2012-11-08 14:41:43.861 INFO  [main] Test - Test.java info 

这样目的就达到了,把log4j.xml改为log4j.properties,效果是一样的,配置如下:
[plain] 
### set log levels ###   
log4j.rootLogger = debug,stdout,File   
log4j.logger.com.zznode.test=debug,File1 
   
log4j.appender.stdout = org.apache.log4j.ConsoleAppender   
log4j.appender.stdout.Target = System.out   
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout   
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n   
   
log4j.appender.File = org.apache.log4j.DailyRollingFileAppender   
log4j.appender.File.File = D:/log4j/test.log   
log4j.appender.File.Append = true   
log4j.appender.File.Threshold = DEBUG 
log4j.appender.File.layout = org.apache.log4j.PatternLayout   
log4j.appender.File.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n   
   
log4j.appender.File1 = org.apache.log4j.DailyRollingFileAppender   
log4j.appender.File1.File = D:/log4j/test1.log  
log4j.appender.File1.Append = true   
log4j.appender.File1.Threshold = DEBUG  
log4j.appender.File1.layout = org.apache.log4j.PatternLayout   
log4j.appender.File1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n   

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜