摘要:如果日志级别等于配置级别,过滤器会根据和接收或拒绝日志。例如过滤掉所有低于级别的日志。有个子标签,用于配置求值条件。
没时间解释了,快上车,老司机先看代码
LogBack.xmlDEBUG ${MESSAGE_FILE_PATTERN} true INFO ACCEPT DENY ${catalina.base}/logs/vod.log ${catalina.base}/logs/vod-info-%d{yyyy-MM-dd}.log ${maxhistory} ${MESSAGE_FILE_PATTERN} true INFO ACCEPT DENY ${catalina.base}/logs/vod-music.log ${catalina.base}/logs/vod-music-%d{yyyy-MM-dd}.log ${maxhistory} ${MESSAGE_FILE_PATTERN} true WARN ${catalina.base}/logs/vod-error.log ${catalina.base}/logs/vod-error-%d{yyyy-MM-dd}.log ${maxhistory} ${MESSAGE_FILE_PATTERN} true INFO ACCEPT DENY ${catalina.base}/logs/vod-douban.log ${catalina.base}/logs/vod-douban-%d{yyyy-MM-dd}.log ${maxhistory} ${MESSAGE_FILE_PATTERN}
上述实现了
1、将DEBUG、INFO、WRAN/ERROR日志分开打印到不同文件
2、通过包名来按模块打印到特定文件
3、日志文件每天rolling、保存最大历史日志文件数
几个注意点:
1、日志打印格式如下:%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level %marker %thread %logger %msg%n
没有打印具体的方法名。如果要打印方法名:加个%M
%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level %marker %thread %logger.%M %msg%n
但是打印方法名可能会加大日志开销,从而影响速度问题。
说明见:http://stackoverflow.com/ques...
Generating the method name is not particularly fast. Thus, its use should be avoided unless execution speed is not an issue.
2、additivity的作用
additivity的作用在于children-logger是否使用 rootLogger配置的appender进行输出。
false:表示只用当前logger的appender-ref。
true:表示当前logger的appender-ref和rootLogger的appender-ref都有效。也就是说会打印至少两遍。
3、filter的作用
过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。
过滤器被添加到
几个常用的过滤器:
LevelFilter: 级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:
例如:将过滤器的日志级别配置为INFO,所有INFO级别的日志交给appender处理,非INFO级别的日志,被过滤掉。
INFO ACCEPT DENY %-4relative [%thread] %-5level %logger{30} - %msg%n
ThresholdFilter: 临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。
例如:过滤掉所有低于INFO级别的日志。
INFO %-4relative [%thread] %-5level %logger{30} - %msg%n
EvaluatorFilter: 求值过滤器,评估、鉴别日志是否符合指定条件。需要额外的两个JAR包,commons-compiler.jar和janino.jar有以下子节点:
鉴别器,常用的鉴别器是JaninoEventEvaluato,也是默认的鉴别器,它以任意的java布尔值表达式作为求值条件,求值条件在配置文件解释过成功被动态编译,布尔值表达式返回true就表示符合过滤条件。evaluator有个子标签
return message.contains("billing"); ACCEPT DENY %-4relative [%thread] %-5level %logger - %msg%n
参考:
https://github.com/makotan/lo...
http://stackoverflow.com/ques...
http://czj4451.iteye.com/blog...
http://aub.iteye.com/blog/111...
# Output pattern : date [thread] priority category - message log4j.rootLogger=INFO, Console, RollingFile,Error #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n #RollingFile log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.RollingFile.File=${catalina.base}/logs/shopping/shopping.log log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n log4j.appender.RollingFile.filter.a=org.apache.log4j.varia.LevelRangeFilter log4j.appender.RollingFile.filter.a.LevelMin=INFO log4j.appender.RollingFile.filter.a.LevelMax=INFO log4j.appender.RollingFile.filter.a.acceptOnMatch=true #ShoppingUtil log4j.appender.ShoppingUtil=org.apache.log4j.DailyRollingFileAppender log4j.appender.ShoppingUtil.File=${catalina.base}/logs/shopping/shopping-util.log log4j.appender.ShoppingUtil.layout=org.apache.log4j.PatternLayout log4j.appender.ShoppingUtil.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n log4j.appender.ShoppingUtil.filter.aa=org.apache.log4j.varia.LevelRangeFilter log4j.appender.ShoppingUtil.filter.aa.LevelMin=INFO log4j.appender.ShoppingUtil.filter.aa.LevelMax=INFO log4j.appender.ShoppingUtil.filter.aa.acceptOnMatch=true #error log4j.appender.Error=org.apache.log4j.DailyRollingFileAppender log4j.appender.Error.File=${catalina.base}/logs/shopping/shopping-error.log log4j.appender.Error.layout=org.apache.log4j.PatternLayout log4j.appender.Error.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n log4j.appender.Error.Threshold=WARN #Project defalult level log4j.logger.org.springside.examples.miniweb=INFO log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=DEBUG log4j.logger.org.springside= INFO log4j.logger.com.shopping= INFO log4j.logger.com.shopping.shop.utility=INFO,Console,ShoppingUtil,Error log4j.additivity.com.shopping.shop.utility=false
参考:
http://stackoverflow.com/ques...
http://www.cnblogs.com/0201zc...
http://blog.csdn.net/liu251/a...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69908.html
摘要:的测试完全不同级别的。记录请求的级别在高于或等于其的有效级别时被称为被启用,否则,称为被禁用。该规则是的核心。指定名称,指定的全限定名。对记录事件进行格式化。查看当前活动文件的大小,如果超过指定大小会告知触发当前活动文件滚动。 一、logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件,官方网站: http://logback.qos.ch。 logback当...
摘要:公众号乐园是由创始人设计的又一个开源日志组件。此外完整实现使你可以很方便地更换成其它日志系统如或。是要与结合起来用的。从控制台打印出来的日志级别只有还有。这里可以使用绝对路径如,会自动在盘下创建文件夹和相应的日志文件。 公众号 java乐园 Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core、logback- class...
摘要:本文要来分享给大家程序员最常用的日志框架组件。没有基础的同学也不要着急,这套教程覆盖了目前所有的日志框架,只要你学,就一定用得到,先收藏,以备不时之需。 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的。在开发和调试阶段,日志可以帮...
摘要:默认情况下将级别的日志输出到控制台中,不会写到日志文件,且不能进行复杂配置。节点用于定义变量,方便使用。 showImg(https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190320135049.png); 前言 java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj...
阅读 2199·2021-11-16 11:44
阅读 618·2019-08-30 15:55
阅读 3251·2019-08-30 15:52
阅读 3550·2019-08-30 15:43
阅读 2176·2019-08-30 11:21
阅读 393·2019-08-29 12:18
阅读 1927·2019-08-26 18:15
阅读 430·2019-08-26 10:32