log4j--分包輸出日誌

來源:互聯網
上載者:User

最近由於業務上出現一些莫名其妙的誤刪除資料,今天研究了下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   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.