摘要:如果日志級別等于配置級別,過濾器會根據和接收或拒絕日志。例如過濾掉所有低于級別的日志。有個子標簽,用于配置求值條件。
沒時間解釋了,快上車,老司機先看代碼
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...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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...
閱讀 2234·2021-11-16 11:44
閱讀 641·2019-08-30 15:55
閱讀 3271·2019-08-30 15:52
閱讀 3595·2019-08-30 15:43
閱讀 2196·2019-08-30 11:21
閱讀 435·2019-08-29 12:18
閱讀 1945·2019-08-26 18:15
閱讀 468·2019-08-26 10:32