1.使用log4j2需要下載包,如下:
2.配置文件可以有三種格式(文件名必須規范,否則系統無法找到配置文件):
- classpath下名為 log4j-test.json 或者log4j-test.jsn文件
- classpath下名為 log4j2-test.xml
- classpath下名為 log4j.json 或者log4j.jsn文件
- classpath下名為 log4j2.xml
3.日志記錄有兩種方法:
1.static Logger logger = LogManager.getLogger(MyApplication.class.getName());
2.private static Logger logger = LogManager.getLogger("MyApplication");
4.我用的xml的配置,所以介紹一下xml配置:
1.首先要配幾個要用到的appender,這些appender功能不一樣,比如有常規輸出,重大異常輸出,你可能需要他們輸出形式或者輸出的文件不同,這些都可以在appender中配置
2.appender里面的一些配置說明:
name:appender的名稱
fileName:輸出文件和名稱
append:是否追加,true表示追加內容到所在的日志,false表示每次都覆蓋
filePattern:表示當日志到達指定的大小或者時間,產生新日志時,舊日志的命名路徑
PatternLayout:指定輸出日志的格式,具體代表的意思見前面的博客中
Policies:策略,表示日志什么時候應該產生新日志,可以有時間策略和大小策略等
ThresholdFilter :過濾器,log4j2中有很多的filter
3.接下來配置logger,指定哪些類進行何種輸出,這個比較簡單,可以直接看栗子:
<?xml version="1.0" encoding="UTF-8"?> <Configuration monitorInterval="1" status="ERROR" strict="true" name="LogConfig"> <Properties> <Property name="logbasedir">e:/log</Property> <Property name="log.layout">%d %-5p %t (%c:%L) - %m%n</Property> </Properties> <--此處使用了兩種類型的appender,RollingFile為滾動類型,滿足策略條件后會新建文件夾記錄 --> <Appenders> <Appender type="Console" name="STDOUT"> <Target>SYSTEM_OUT</Target> <Layout type="PatternLayout" pattern="${log.layout}"/> </Appender> <Appender type="RollingFile" name="FILE" fileName="${logbasedir}/jutap-${sys:APPNAME}.log" filePattern = "${logbasedir}/jutap-${sys:APPNAME}-%d{yyyy-MM-dd}.%i.log"> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <Layout type="PatternLayout"> <Charset>GBK</Charset> <Pattern>${log.layout}</Pattern> </Layout> </Appender> <Appender type="RollingFile" name="ExceptionLog" fileName="${logbasedir}/exception-${sys:APPNAME}.log" filePattern = "${logbasedir}/exception-${sys:APPNAME}-%d{yyyy-MM-dd}.%i.log"> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <Layout type="PatternLayout"> <Charset>GBK</Charset> <Pattern>${log.layout}</Pattern> </Layout> </Appender> </Appenders> <Loggers> <Logger name="exception" level="error" additivity="false"> <AppenderRef ref="ExceptionLog"/> </Logger> <Root level="info"> <AppenderRef ref="STDOUT"/> <AppenderRef ref="FILE"/> </Root> <Logger name="com.garfield.learn" level="debug"/> <Logger name="com.garfield.learnp" level="info"/> </Loggers> </Configuration>
done.