Log4j2的常用配置
定义日志测试类:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
logger.trace("我是trace信息");
logger.debug("我是debug信息");
logger.info("我是info信息");
logger.warn("我是warn信息");
logger.error("我是error信息");
logger.fatal("我是fatal信息");
1、log4j规定了默认的几个级别:trace<debug<info<warn<error<fatal。级别之间是包含的关系,如果设置的是trace,则大于等于这个级别的日志都会输出。
2、Log4j有一个默认的配置,它的日志级别是ERROR,只输出到控制台。
3、root没有name属性,root相当于根节点,所有的logger都继承了root的log配置,如果没有指定logger的级别,只能打印root级别以上的日志。
即使你在很多类里面通过类名.class.getName() 得到很多的logger,而且没有在配置文件的loggers下面做配置,他们也都能够输出,因为他们都继承了root的log配置。
如下设置,root的级别为error,
<rootlevel="error"includeLocation="true">
<appender-refref="Console"/>
</root>
<!--定义控制台输出-->Console这些节点不能随便命名的。
<Consolename="Console"target="SYSTEM_OUT"follow="true">
<PatternLayoutpattern="%date{yyyy-MM-ddHH:mm:ss.SSS}%level[%thread][%file:%line]-%msg%n"/>
</Console>
输出结果:
2016-12-2215:17:28.978ERROR[main][Log4j2Test.java:15]-我是error信息
2016-12-2215:17:28.979FATAL[main][Log4j2Test.java:16]-我是fatal信息
如果修改控制台输出,加入如下:
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilterlevel="fatal"onMatch="ACCEPT"onMismatch="DENY"/>
则Console只输出fatal级别以上的日志:
2016-12-2215:19:05.945FATAL[main][Log4j2Test.java:16]-我是fatal信息
设置指定类的日志输出,如果设置级别为info,即使root的级别为error,指定类的info级别以上的扔能输出,相当于重写了root。
<!--additivity开启的话,如果这个logger也是满足root的,所以会被打印两遍。-->
<loggername="test.Log4j2Test"level="info"additivity="false">
<appender-refref="ERROR-APPENDER"/>
</logger>
则test.Log4j2Test的所有info级别以上的日志会输出到ERROR-APPENDER文件里,如果ERROR-APPENDER有设置:
<ThresholdFilterlevel="error"onMatch="ACCEPT"onMismatch="DENY"/>
则test.Log4j2Test只有满足error以上级别的才会输出到文件,要大于logger本身定义的info级别。
最终输出root->logger->appender的级别限制。
如果test.Log4j2Test配置两个AppenderReF,那么两个都会记录满足level="debug"级别的日志,这样会造成多处记录日志,应该开启匹配过滤。
<loggername="test.Log4j2Test"level="debug"additivity="false">
<AppenderReFref="DEBUG-APPENDER"/>
<AppenderReFref="ERROR-APPENDER"/>
</logger>
发邮件功能,只有error级别以上的才能发邮件,需要引入mail的jar包。
<SMTPname="Mail"subject="ErrorLog"to="to@qq.com"from="from@sina.cn"replyTo="from@sina.cn"
smtpProtocol="smtp"smtpHost="smtp.sina.cn"smtpPort="25"bufferSize="50"smtpDebug="false"
smtpPassword="***"smtpUsername="from@sina.cn">
</SMTP>
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。