2021-05-12 14:32:11
Log4j組態檔及nutch中的紀錄檔設定
使用SLF4J作為紀錄檔系統時,由於SLF4J只是一個介面,它需要一個具體實現來執行。
具體參考 http://www.linuxidc.com/Linux/2015-03/114636.htm
由於slf4j統一了API介面,因此,若log4j實現來紀錄檔輸出,則只需要設定組態檔的內容即可,log4j.properties中的設定可以分成2類:
第一類定義了紀錄檔的輸出級別,以及以輸出目標(appender)
第二類定義了appender的具體屬性。
一、紀錄檔輸出級別、輸出目標(appender)的定義
1、log4j.rootLogger=紀錄檔級別,appender1, appender2, ….
範例:log4j.rootLogger=INFO,stdout,DRFA
(1)設定整個工程的紀錄檔預設級別,以及紀錄檔的輸出目標
(2)紀錄檔級別為ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不區分大小寫。範例中的紀錄檔級別為INFO,即只有大於或者等於INFO的紀錄檔才會被記錄。
(3)紀錄檔的輸出目標有以下幾類:
ConsoleAppender(控制台)
FileAppender(檔案)
DailyRollingFileAppender(每天產生一個紀錄檔檔案
RollingFileAppender(檔案大小到達指定尺寸時產生一個新的檔案)
WriteAppender(將紀錄檔資訊以流格式傳送到任意指定的地方)
JDBCAppender(將紀錄檔資訊儲存到資料庫中)
範例中使用的是DailyRollingFileAppender。下一部分會詳細介紹每個appender中的具體屬性。
2、log4j.logger.org.mypackage[.MyClass]=紀錄檔級別,appender1, appender2, ….
範例:log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
(1)log4j.rootLogger 中的設定對整個工程生效,若只想對某個包或者某個類生效,可以使用本設定項。
3、log4j.threshold=ALL
In fact , threshold's level should be larger or equals rootlogger's level.
usually, thresold can be used to define some special appender's filter log level.
eg:
there are two appenders: console and file,and the level is warn, if you just only want the error message be written to file, so you can use "file.threshold=error" to filter out the "warn" message.
二、具體某個appender的設定
1、log4j.appender.appender1.File=檔案目錄及檔案
2、log4j.appender.appender1.MaxFileSize=最大檔案大小
3、log4j.appender.appender1.MaxBackupIndex=備份檔案個數
其中,appender1是在log4j.rootlogger或者具體包紀錄檔中定義過的;
檔案目錄及檔案,例如,/home/admin/logs/hutudan.log
最大檔案大小,例如,100KB
備份檔案個數,例如,1
4、log4j.appender.ServerDailyRollingFile.DatePattern=紀錄檔字尾格式
例如,'.'yyyy-MM-dd
5、log4j.appender.appender1.layout=org.apache.log4j.紀錄檔布局格式
HTMLLayout(以HTML表格形式布局)
SimpleLayout(包含紀錄檔資訊的級別和資訊字串)
TTCCLayout(包含紀錄檔產生的時間,執行緒,類別等資訊)
PatternLayout(可以靈活的指定布局格式,常用)
6、log4j.appender.appender1.layout.ConversionPattern=紀錄檔輸出格式
例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
%c 輸出紀錄檔資訊所屬的類的全名
%d 輸出紀錄檔時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy-M-dd HH:mm:ss },輸出類似:2002-10-18- 22:10:28
%f 輸出紀錄檔資訊所屬的類的類名
%l 輸出紀錄檔事件的發生位置,即輸出紀錄檔資訊的語句處於它所在的類的第幾行
%m 輸出程式碼中指定的資訊,如log(message)中的message
%n 輸出一個回車換行符,Windows平台為“rn”,Unix平台為“n”
%p 輸出優先順序,即DEBUG,INFO,WARN,ERROR,FATAL。如果是呼叫debug()輸出的,則為DEBUG,依此類推
%r 輸出自應用啟動到輸出該紀錄檔資訊所耗費的毫秒數
%t 輸出產生該紀錄檔事件的執行緒名
7、log4j.appender.ServerDailyRollingFile.Append=true
在後面追加
三、範例:Nutch中的log4j.properties
# Define some default values that can be overridden by system properties
Hadoop.log.dir=.
hadoop.log.file=hadoop.log
# RootLogger - DailyRollingFileAppender
log4j.rootLogger=INFO,DRFA
# Logging Threshold
log4j.threshold=ALL
#special logging requirements for some commandline tools
log4j.logger.org.apache.nutch.crawl.Crawl=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.InjectorJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.host.HostInjectorJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.DbUpdaterJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.host.HostDbUpdateJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.fetcher.FetcherJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.parse.ParserJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.IndexingJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.DeleteDuplicates=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.CleaningJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.WebTableReader=INFO,cmdstdout
log4j.logger.org.apache.nutch.host.HostDbReader=INFO,cmdstdout
log4j.logger.org.apache.nutch.parse.ParserChecker=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.IndexingFiltersChecker=INFO,cmdstdout
log4j.logger.org.apache.nutch.plugin.PluginRepository=WARN
log4j.logger.org.apache.nutch.api.NutchServer=INFO,cmdstdout
log4j.logger.org.apache.nutch=INFO
log4j.logger.org.apache.hadoop=WARN
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.gora=WARN
#
# Daily Rolling File Appender
#
log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
# Rollver at midnight
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
# 30-day backup
#log4j.appender.DRFA.MaxBackupIndex=30
log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
# Pattern format: Date LogLevel LoggerName LogMessage
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
# Debugging Pattern format: Date LogLevel LoggerName (FileName:MethodName:LineNo) LogMessage
#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
#
# stdout
# Add *stdout* to rootlogger above if you want to use this
#
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
#
# plain layout used for commandline tools to output to console
#
log4j.appender.cmdstdout=org.apache.log4j.ConsoleAppender
log4j.appender.cmdstdout.layout=org.apache.log4j.PatternLayout
log4j.appender.cmdstdout.layout.ConversionPattern=%m%n
基本步驟如下:
1、指定log4j.rootLogger
log4j.rootLogger=INFO,DRFA
【可選】為單獨某個包或者類指定紀錄檔級別及appender
#special logging requirements for some commandline tools
log4j.logger.org.apache.nutch.crawl.Crawl=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.InjectorJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.host.HostInjectorJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.GeneratorJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.DbUpdaterJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.host.HostDbUpdateJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.fetcher.FetcherJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.parse.ParserJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.IndexingJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.DeleteDuplicates=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.CleaningJob=INFO,cmdstdout
log4j.logger.org.apache.nutch.crawl.WebTableReader=INFO,cmdstdout
log4j.logger.org.apache.nutch.host.HostDbReader=INFO,cmdstdout
log4j.logger.org.apache.nutch.parse.ParserChecker=INFO,cmdstdout
log4j.logger.org.apache.nutch.indexer.IndexingFiltersChecker=INFO,cmdstdout
log4j.logger.org.apache.nutch.plugin.PluginRepository=WARN
log4j.logger.org.apache.nutch.api.NutchServer=INFO,cmdstdout
log4j.logger.org.apache.nutch=INFO
log4j.logger.org.apache.hadoop=WARN
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.gora=WARN
因此,nutch相關的包大多數紀錄檔均被重新指定了指向cmdstdout,而其它紀錄檔,如hadoop, zookeeper, gora只是重新定義了紀錄檔級別,而未重新定義appender,因此它們紀錄檔將被指向DRFA。
【可選】指定threshold
# Logging Threshold
log4j.threshold=ALL
2、指定某個appender的屬性
cmstd:
#
# plain layout used for commandline tools to output to console
#
log4j.appender.cmdstdout=org.apache.log4j.ConsoleAppender
log4j.appender.cmdstdout.layout=org.apache.log4j.PatternLayout
log4j.appender.cmdstdout.layout.ConversionPattern=%m%n
%m 輸出程式碼中指定的資訊,如log(message)中的message
%n 輸出一個回車換行符,Windows平台為“rn”,Unix平台為“n
DRFA:
#
# Daily Rolling File Appender
#
log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
# Rollver at midnight
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
# 30-day backup
#log4j.appender.DRFA.MaxBackupIndex=30
log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
# Pattern format: Date LogLevel LoggerName LogMessage
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
# Debugging Pattern format: Date LogLevel LoggerName (FileName:MethodName:LineNo) LogMessage
#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
輸出檔案可以用變數指定,如上面的:
log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
Log4j設定詳解 http://www.linuxidc.com/Linux/2014-10/108401.htm
Apache Log4j 2 更多內容請看: http://logging.apache.org/log4j/2.x/
Log4j入門使用教學 http://www.linuxidc.com/Linux/2013-06/85223.htm
Log4j 紀錄檔詳細用法 http://www.linuxidc.com/Linux/2014-09/107303.htm
Hibernate設定Log4j顯示SQL引數 http://www.linuxidc.com/Linux/2013-03/81870.htm
Log4j學習筆記(1)_Log4j 基礎&設定項解析 http://www.linuxidc.com/Linux/2013-03/80586.htm
Log4j學習筆記(2)_Log4j設定範例&Spring整合Log4j http://www.linuxidc.com/Linux/2013-03/80587.htm
相關文章