1. 程式人生 > >log4j不同的類輸出到不同的日誌檔案中

log4j不同的類輸出到不同的日誌檔案中

1、log4j簡介

Log4j有三個主要的元件:Loggers(記錄器),Appenders (輸出源)和Layouts(佈局)。這裡可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個元件可以輕鬆地記錄資訊的型別和級別,並可以在執行時控制日誌輸出的樣式和位置。

  • loggers

    Loggers元件在此係統中被分為五個級別:DEBUG、INFO、WARN、ERROR和FATAL。這五個級別是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,分別用來指定這條日誌資訊的重要程度,明白這一點很重要,Log4j有一個規則:只輸出級別不低於設定級別的日誌資訊,假設Loggers級別設定為INFO,則INFO、WARN、ERROR和FATAL級別的日誌資訊都會輸出,而級別比INFO低的DEBUG則不會輸出。

  • Appenders

禁用和使用日誌請求只是Log4j的基本功能,Log4j日誌系統還提供許多強大的功能,比如允許把日誌輸出到不同的地方,如控制檯(Console)、檔案(Files)等,可以根據天數或者檔案大小產生新的檔案,可以以流的形式傳送到其它地方等等。

常使用的類如下:

org.apache.log4j.ConsoleAppender(控制檯)
org.apache.log4j.FileAppender(檔案)
org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)
org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案)
org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)

配置模式:
log4j.appender.appenderName = className
log4j.appender.appenderName.Option1 = value1

log4j.appender.appenderName.OptionN = valueN

2、 Maven引入

   <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version
>
</dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.3</version> </dependency>

3、詳細配置
日誌檔案:log4j.properties

log4j.rootLogger=DEBUG,console
log4j.logger.test  =DEBUG,test
log4j.logger.test1  =DEBUG,test1


log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.threshold=INFO
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n


log4j.appender.test=org.apache.log4j.RollingFileAppender
log4j.appender.test.Append=true
log4j.appender.test.File=./td-test/test.log
log4j.appender.test.Threshold=INFO
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.test.MaxFileSize=10MB
log4j.appender.test.file.MaxBackupIndex=3
log4j.appender.test.File.Encoding = UTF-8


log4j.appender.test1=org.apache.log4j.RollingFileAppender
log4j.appender.test1.Append=true
log4j.appender.test1.File=./td-test/test1.log
log4j.appender.test1.Threshold=INFO
log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.test1.MaxFileSize=10MB
log4j.appender.test1.file.MaxBackupIndex=3
log4j.appender.test1.File.Encoding = UTF-8





4、測試使用


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * User:    ysl
 * Date:   2016/10/21
 * Time:   18:18
 */
public class Test {

    private static final Logger logger1 = LoggerFactory.getLogger("test");
    private static final Logger logger2 = LoggerFactory.getLogger("test1");


    public static void main(String[] args )
    {
        logger1.info("@@@@@@@@@@@@@@@");
        logger2.info("#######################");

    }
}

5、總結
對於不同類,輸出日誌到不同的檔案,有時候會有這種需求。一方面避免了所有的日誌檔案都輸出到一個檔案中導致日誌檔案過大,不易尋找要尋找的內容。另一方面也可以通過這種方式使得有些日誌能夠被收集起來,加以統計分析。