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(); } }