温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Log4j2的常用配置

发布时间:2020-07-18 17:21:24 来源:网络 阅读:4242 作者:netpeak 栏目:开发技术

定义日志测试类:

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,

<root level="error" includeLocation="true">

      <appender-ref ref="Console"/>

</root>  

<!-- 定义控制台输出 -->  Console这些节点不能随便命名的。

 <Console name="Console" target="SYSTEM_OUT" follow="true">  

     <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />  

 </Console>  

输出结果:

2016-12-22 15:17:28.978 ERROR [main][Log4j2Test.java:15] - 我是error信息

2016-12-22 15:17:28.979 FATAL [main][Log4j2Test.java:16] - 我是fatal信息 

如果修改控制台输出,加入如下:

<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->

<ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="DENY"/>  

则Console只输出fatal级别以上的日志

2016-12-22 15:19:05.945 FATAL [main][Log4j2Test.java:16] - 我是fatal信息  

设置指定类的日志输出,如果设置级别为info,即使root的级别为error,指定类的info级别以上的扔能输出,相当于重写了root。

 <!--additivity开启的话,如果这个logger也是满足root的,所以会被打印两遍。-->

   <logger name="test.Log4j2Test" level="info" additivity="false">

      <appender-ref ref="ERROR-APPENDER"/>

   </logger> 

test.Log4j2Test的所有info级别以上的日志会输出到ERROR-APPENDER文件里,如果ERROR-APPENDER有设置

<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>  

test.Log4j2Test只有满足error以上级别的才会输出到文件,要大于logger本身定义的info级别。

最终输出root->logger->appender的级别限制。

如果test.Log4j2Test配置两个AppenderReF,那么两个都会记录满足level="debug"级别的日志,这样会造成多处记录日志,应该开启匹配过滤。

<logger name="test.Log4j2Test" level="debug" additivity="false">

            <AppenderReF ref="DEBUG-APPENDER"/>

            <AppenderReF ref="ERROR-APPENDER"/>

</logger>  

发邮件功能,只有error级别以上的才能发邮件,需要引入mail的jar包。

<SMTP name="Mail" subject="Error Log" 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> 

 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI