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(包含日志産生的時間、線程、類别等資訊)
配置檔案
Layout輸出格式
指定消息格式的内容
配置參考
#############
# 輸出到控制台
#############
# 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