资讯专栏INFORMATION COLUMN

LogBack与Log4j配置与日志分模块打印

kycool / 3467人阅读

摘要:如果日志级别等于配置级别,过滤器会根据和接收或拒绝日志。例如过滤掉所有低于级别的日志。有个子标签,用于配置求值条件。

没时间解释了,快上车,老司机先看代码

LogBack.xml

</>复制代码

  1. DEBUG
  2. ${MESSAGE_FILE_PATTERN}
  3. true
  4. INFO
  5. ACCEPT
  6. DENY
  7. ${catalina.base}/logs/vod.log
  8. ${catalina.base}/logs/vod-info-%d{yyyy-MM-dd}.log
  9. ${maxhistory}
  10. ${MESSAGE_FILE_PATTERN}
  11. true
  12. INFO
  13. ACCEPT
  14. DENY
  15. ${catalina.base}/logs/vod-music.log
  16. ${catalina.base}/logs/vod-music-%d{yyyy-MM-dd}.log
  17. ${maxhistory}
  18. ${MESSAGE_FILE_PATTERN}
  19. true
  20. WARN
  21. ${catalina.base}/logs/vod-error.log
  22. ${catalina.base}/logs/vod-error-%d{yyyy-MM-dd}.log
  23. ${maxhistory}
  24. ${MESSAGE_FILE_PATTERN}
  25. true
  26. INFO
  27. ACCEPT
  28. DENY
  29. ${catalina.base}/logs/vod-douban.log
  30. ${catalina.base}/logs/vod-douban-%d{yyyy-MM-dd}.log
  31. ${maxhistory}
  32. ${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...

</>复制代码

  1. 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级别的日志,被过滤掉。

</>复制代码

  1. INFO
  2. ACCEPT
  3. DENY
  4. %-4relative [%thread] %-5level %logger{30} - %msg%n

ThresholdFilter: 临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。
例如:过滤掉所有低于INFO级别的日志。

</>复制代码

  1. INFO
  2. %-4relative [%thread] %-5level %logger{30} - %msg%n

EvaluatorFilter: 求值过滤器,评估、鉴别日志是否符合指定条件。需要额外的两个JAR包,commons-compiler.jar和janino.jar有以下子节点:
:
鉴别器,常用的鉴别器是JaninoEventEvaluato,也是默认的鉴别器,它以任意的java布尔值表达式作为求值条件,求值条件在配置文件解释过成功被动态编译,布尔值表达式返回true就表示符合过滤条件。evaluator有个子标签,用于配置求值条件。
:用于配置符合过滤条件的操作
:用于配置不符合过滤条件的操作

</>复制代码

  1. return message.contains("billing");
  2. ACCEPT
  3. DENY
  4. %-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...

Log4j.properties配置

</>复制代码

  1. # Output pattern : date [thread] priority category - message
  2. log4j.rootLogger=INFO, Console, RollingFile,Error
  3. #Console
  4. log4j.appender.Console=org.apache.log4j.ConsoleAppender
  5. log4j.appender.Console.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.Console.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n
  7. #RollingFile
  8. log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
  9. log4j.appender.RollingFile.File=${catalina.base}/logs/shopping/shopping.log
  10. log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
  11. log4j.appender.RollingFile.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n
  12. log4j.appender.RollingFile.filter.a=org.apache.log4j.varia.LevelRangeFilter
  13. log4j.appender.RollingFile.filter.a.LevelMin=INFO
  14. log4j.appender.RollingFile.filter.a.LevelMax=INFO
  15. log4j.appender.RollingFile.filter.a.acceptOnMatch=true
  16. #ShoppingUtil
  17. log4j.appender.ShoppingUtil=org.apache.log4j.DailyRollingFileAppender
  18. log4j.appender.ShoppingUtil.File=${catalina.base}/logs/shopping/shopping-util.log
  19. log4j.appender.ShoppingUtil.layout=org.apache.log4j.PatternLayout
  20. log4j.appender.ShoppingUtil.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n
  21. log4j.appender.ShoppingUtil.filter.aa=org.apache.log4j.varia.LevelRangeFilter
  22. log4j.appender.ShoppingUtil.filter.aa.LevelMin=INFO
  23. log4j.appender.ShoppingUtil.filter.aa.LevelMax=INFO
  24. log4j.appender.ShoppingUtil.filter.aa.acceptOnMatch=true
  25. #error
  26. log4j.appender.Error=org.apache.log4j.DailyRollingFileAppender
  27. log4j.appender.Error.File=${catalina.base}/logs/shopping/shopping-error.log
  28. log4j.appender.Error.layout=org.apache.log4j.PatternLayout
  29. log4j.appender.Error.layout.ConversionPattern=[shopping] %-d{HH:mm:ss} %p [%c{1}.%M(%L)] %m%n
  30. log4j.appender.Error.Threshold=WARN
  31. #Project defalult level
  32. log4j.logger.org.springside.examples.miniweb=INFO
  33. log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=DEBUG
  34. log4j.logger.org.springside= INFO
  35. log4j.logger.com.shopping= INFO
  36. log4j.logger.com.shopping.shop.utility=INFO,Console,ShoppingUtil,Error
  37. 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

相关文章

  • java日志框架

    摘要:一日志概述领域存在多种日志框架,目前常用的日志框架包括,,,,,。开销更高三与其他日志组件调用关系包名说明版本的桥接器,你需要将加入。的桥接器,原生日志框架。 一、Java日志概述 java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul。 Commons Logging和Slf4j是日志...

    dendoink 评论0 收藏0
  • logback的简单使用

    摘要:的测试完全不同级别的。记录请求的级别在高于或等于其的有效级别时被称为被启用,否则,称为被禁用。该规则是的核心。指定名称,指定的全限定名。对记录事件进行格式化。查看当前活动文件的大小,如果超过指定大小会告知触发当前活动文件滚动。 一、logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件,官方网站: http://logback.qos.ch。 logback当...

    habren 评论0 收藏0
  • 9、springcloud整合logback打印sql语句

    摘要:公众号乐园是由创始人设计的又一个开源日志组件。此外完整实现使你可以很方便地更换成其它日志系统如或。是要与结合起来用的。从控制台打印出来的日志级别只有还有。这里可以使用绝对路径如,会自动在盘下创建文件夹和相应的日志文件。 公众号 java乐园 Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core、logback- class...

    singerye 评论0 收藏0
  • 强推!大牛程序员必备的Java日志框架,性能无敌

    摘要:本文要来分享给大家程序员最常用的日志框架组件。没有基础的同学也不要着急,这套教程覆盖了目前所有的日志框架,只要你学,就一定用得到,先收藏,以备不时之需。 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的。在开发和调试阶段,日志可以帮...

    zebrayoung 评论0 收藏0
  • springboot超级详细的日志配置(基于logback)

    摘要:默认情况下将级别的日志输出到控制台中,不会写到日志文件,且不能进行复杂配置。节点用于定义变量,方便使用。 showImg(https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190320135049.png); 前言   java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj...

    meislzhua 评论0 收藏0

发表评论

0条评论

kycool

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<