使用 log4j 2記錄日志


log4j2使用方法還是很簡單的

1 需要使用的jar包有兩個,

1)log4j-api-2.8.2.jar

2)log4j-core-2.8.2.jar

 

2 產生Logger 對象非常的簡單,使用 LogManager.getLogger(name) 方法可以獲取指定名稱的 logger對象。其中 name 是在配置文件中的 logger。配置文件可以是多種的一般使用properties文件或者xml文件,配置文件放在classpath 指定的目錄中,因為該組件默認回去classpath路徑中查找 log4j2.xml文件或log4j2.properties或log4j2.jsn等。詳情請查看官網

我們放到src/目錄下即可。

 

3 配置文件,主要就是配置Loggers 和Appenders。Logger就是配置logger對象, Appender就是說明在哪輸出信息。簡單例子如下

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="warn" monitorInterval="600">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d [%t] %-5level %logger{36} %msg%n" />  
        </Console>
        <RollingFile name="RollingFile" fileName="logs/mylog.log" filePattern="logs/$${date:yyyy-MM}/mylog-%d{MM-dd-HH-mm}-%i.log.gz">
          <PatternLayout>
            <Pattern>%d %-5level %c{1.} [%t] %m%n</Pattern>
          </PatternLayout>
          <Policies>
            <TimeBasedTriggeringPolicy interval="1"/>
            <SizeBasedTriggeringPolicy size="250 MB"/>
          </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
            <AppenderRef ref="Console" />
        </Root>
        <Logger name="mylog" level="warn" additivity="false">
            <AppenderRef ref="RollingFile"/>
        </Logger>
    </Loggers>
</Configuration> 

關鍵字說明,詳細說明請查看官網

1)monitorInterval:會自動加載配置文件的時間間隔,單位是秒

 

PatternLayout 中的格式說明

2)%d:輸出日期,默認格式,例如:2012-11-02 14:34:02,781

3)%t: 輸出當前線程名稱

4)%-5level 輸出日志級別,-5表示左對齊並且固定輸出5個字符

5)%logger 或 %c  輸出logger名稱,因為Root Logger沒有名稱,所以沒有輸出

6)%msg 日志文本

7)%n 換行

 

在設置日志級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低於WARN的信息都不會輸出。對於Loggers中level的定義同樣適用。

簡單代碼如下:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import org.junit.Test;

public class MyLogger {
    private Logger myLogger = LogManager.getLogger("mylog");
    
    @Test
    public void fun1(){
        for(int i=0;i<10;i++){
            myLogger.trace("trace message");
            myLogger.info("info message");
            myLogger.debug("debug message");
            myLogger.warn("warn message");
            myLogger.error("error message");
            myLogger.fatal("fatal message");
            
            try {
                Thread.sleep(1000*30);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                myLogger.error(e);
            }
        
        }
        
    }
    
    public static void main(String[] args) {
        new MyLogger().fun1();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM