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.