天天看點

Log4j日志記錄

Log4j主要由Loggers(日志記錄器)、Appenders(輸出器)和Layout(日志格式化器)組成,其中Loggers控制日志的輸出級别與日志是否輸出;Appenders指定日志的輸出方式(輸出到控制台、檔案等);Loyout控制日志資訊的輸出格式

沒有配置檔案

1、Loggers#

Loggers元件在此系統中被分為五個級别:DEBUG、INFO、WARN、ERROR和FATAL。這五個級别是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用來指定這條日志資訊的重要程度

Log4j有一個規則:隻輸出級别不低于設定級别的日志資訊,假設Loggers級别設定為INFO,則INFO、WARN、ERROR和FATAL級别的日志資訊都會輸出,而級别比INFO低的DEBUG則不會輸出。

配置

log4j.appender.appenderName = className
appenderName:自定義appderName,在log4j.rootLogger設定中使用;
className:可設值如下:

(1)org.apache.log4j.ConsoleAppender(控制台)
(2)org.apache.log4j.FileAppender(檔案)
(3)org.apache.log4j.DailyRollingFileAppender(每天産生一個日志檔案)
(4)org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候産生一個新的檔案)
(5)org.apache.log4j.WriterAppender(将日志資訊以流格式發送到任意指定的地方)
           

2、Appenders

禁用和使用日志請求隻是Log4j的基本功能,Log4j日志系統還提供許多強大的功能,比如允許把日志輸出到不同的地方,如控制台(Console)、檔案(Files)等,可以根據天數或者檔案大小産生新的檔案,可以以流的形式發送到其它地方等等。

常使用的類如下:

log4j.appender.appenderName = className
           

className:可設值如下

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(檔案)

org.apache.log4j.DailyRollingFileAppender(每天産生一個日志檔案)

org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候産生一個新的檔案)

org.apache.log4j.WriterAppender(将日志資訊以流格式發送到任意指定的地方)

3、Layouts

Log4j可以在Appenders的後面附加Layouts來完成這個功能。

Layouts提供四種日志輸出樣式,如根據HTML樣式、自由指定樣式、包含日志級别與資訊的樣式和包含日志時間、線程、類别等資訊的樣式。

常使用的類如下:

org.apache.log4j.HTMLLayout(以HTML表格形式布局)

org.apache.log4j.PatternLayout(可以靈活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志資訊的級别和資訊字元串)

org.apache.log4j.TTCCLayout(包含日志産生的時間、線程、類别等資訊)

Log4j日志記錄

配置檔案

Log4j日志記錄
Log4j日志記錄
Log4j日志記錄

Layout輸出格式

Log4j日志記錄

指定消息格式的内容

Log4j日志記錄

配置參考

Log4j日志記錄
#############
# 輸出到控制台
#############

# log4j.rootLogger日志輸出類别和級别:隻輸出不低于該級别的日志資訊DEBUG < INFO < WARN < ERROR < FATAL
# WARN:日志級别     CONSOLE:輸出位置自己定義的一個名字       logfile:輸出位置自己定義的一個名字
log4j.rootLogger=WARN,CONSOLE,logfile
# 配置CONSOLE輸出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
# 配置CONSOLE設定為自定義布局模式
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
# 配置CONSOLE日志的輸出格式  [frame] 2019-08-22 22:52:12,000  %r耗費毫秒數 %p日志的優先級 %t線程名 %C所屬類名通常為全類名 %L代碼中的行号 %x線程相關聯的NDC %m日志 %n換行
log4j.appender.CONSOLE.layout.ConversionPattern=[frame] %d{yyyy-MM-dd HH:mm:ss,SSS} - %-4r %-5p [%t] %C:%L %x - %m%n

################
# 輸出到日志檔案中
################

# 配置logfile輸出到檔案中 檔案大小到達指定尺寸的時候産生新的日志檔案
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
# 儲存編碼格式
log4j.appender.logfile.Encoding=UTF-8
# 輸出檔案位置此為項目根目錄下的logs檔案夾中
log4j.appender.logfile.File=logs/root.log
# 字尾可以是KB,MB,GB達到該大小後建立新的日志檔案
log4j.appender.logfile.MaxFileSize=10MB
# 設定滾定檔案的最大值3 指可以産生root.log.1、root.log.2、root.log.3和root.log四個日志檔案
log4j.appender.logfile.MaxBackupIndex=3  
# 配置logfile為自定義布局模式
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n

##########################
# 對不同的類輸出不同的日志檔案
##########################

# club.bagedate包下的日志單獨輸出
log4j.logger.club.bagedate=DEBUG,bagedate
# 設定為false該日志資訊就不會加入到rootLogger中了
log4j.additivity.club.bagedate=false
# 下面就和上面配置一樣了
log4j.appender.bagedate=org.apache.log4j.RollingFileAppender
log4j.appender.bagedate.Encoding=UTF-8
log4j.appender.bagedate.File=logs/bagedate.log
log4j.appender.bagedate.MaxFileSize=10MB
log4j.appender.bagedate.MaxBackupIndex=3
log4j.appender.bagedate.layout=org.apache.log4j.PatternLayout
log4j.appender.bagedate.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n