##日誌配置html
log4j2是使用log4j2.xml
配置文件,區別於log4j,配置項也有一些變化。 如下是一個最經常使用的控制檯輸出日誌的配置:apache
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>
##兼容其餘日誌組件api
通常經常使用的日誌組件log4j(1.2.x),common-log(jcl),self4j,所有橋接,看着都累,可是很實用,把全部日誌API都適配過來,全用log4j2處理。tomcat
依賴配置(詳見 log4j2 maven-artifacts)以下:app
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-jcl</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.7</version> </dependency>
##配置變量 支持不少上下文環境中的變量,詳見 Log4j2 Lookupsmaven
好比:日誌
能夠在具體運用時經過環境變量或系統變量去控制日誌輸出的路徑。 好比,輸出到tomcat/logs下能夠這樣:code
${sys:catalina.base}/logs/xxx.log
由於tomcat啓動腳本中加入了 -Dcatalina.base=...
系統參數。xml
##日誌輸出模板htm
通常使用:
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
比較有意思的是%c{1.}
這個會輸出一個縮寫的日誌記錄器名稱:
org.apache.commons.Foo -> o.a.c.Foo
會節約很多空間。
##循環文件日誌
這個在實際中常常用到,參見 RollingFileAppender
好比:
<RollingFile name="RollingFile" fileName="${sys:catalina.base}/logs/xxx.log" filePattern="${sys:catalina.base}/logs/xxx.%d{yyyy-MM-dd}-%i.log.gz"> <PatternLayout> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="200 MB"/> </Policies> </RollingFile>
這會天天切出帶日期後綴的日誌文件,且會根據體積200MB左右一個文件,最讚的是還用gz壓縮了(注意使用.gz的後綴會自動壓縮,如果.log則是原始文本)