References: https://www.jianshu.com/p/ccafda45bcea
1. 配置模板
1 | ############# |
2. Log4j简介
Log4j配置文件包含三个主要的组件:
- Loggers(记录器):配置日志类别和级别。
- Appenders (输出源):配置日志输出位置。
- Layouts(布局):配置日志输出格式。
2.1 Loggers
Loggers被分为五个级别:DEBUG
< INFO
< WARN
< ERROR
< FATAL
,只会输出级别不低于设定级别的日志信息
2.2 Appenders
Log4j日志系统提供许多强大的功能:
① 允许把日志输出到不同的地方,例如控制台(Console)、文件(Files);
② 可以根据天数或者文件大小产生新的文件;
③ 可以以流的形式将日志文件发送到其它位置(文件系统、数据库等);
常使用的类如下:
org.apache.log4j.ConsoleAppender
(控制台)org.apache.log4j.FileAppender
(文件)org.apache.log4j.DailyRollingFileAppender
(每天产生一个日志文件)org.apache.log4j.RollingFileAppender
(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender
(将日志信息以流格式发送到任意指定的地方)
1 | # 配置方式 |
2.3 Layouts
Log4j可以在Appenders的后面使用Layouts设置日志输出格式。
常使用的类如下:
org.apache.log4j.HTMLLayout
(以HTML表格形式布局)org.apache.log4j.PatternLayout
(可以灵活地指定布局模式)org.apache.log4j.SimpleLayout
(包含日志信息的级别和信息字符串)org.apache.log4j.TTCCLayout
(包含日志产生的时间、线程、类别等信息)
1 | # 配置方式 |
3. 配置详解
配置文件本质上是对Logger、Appender及Layout进行相应设定。
3.1 Logger
1 | [ level ] , appenderName1, appenderName2, … = |
- level :设定日志记录的最低级别,可设的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别,建议只使用中间四个级别。
- appenderName:指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开。例如:log4j.rootLogger=INFO,A1,B2,C3
3.2 日志信息输出位置(Appenders)
1 | className = |
appenderName
:自定义appderName
,在log4j.rootLogger
设置中使用;className
:
org.apache.log4j.ConsoleAppender
(控制台)org.apache.log4j.FileAppender
(文件)org.apache.log4j.DailyRollingFileAppender
(每天产生一个日志文件)org.apache.log4j.RollingFileAppender
(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender
(将日志信息以流格式发送到任意指定的地方)
3.2.1 ConsoleAppender选项
Threshold=WARN
:指定日志信息的最低输出级别,默认为DEBUG
。ImmediateFlush=true
:表示所有消息都会被立即输出,设为false
则不输出,默认值是true
。Target=System.err
:默认值是System.out
。
3.2.2 FileAppender选项
Threshold=WARN
:指定日志信息的最低输出级别,默认为DEBUG
。ImmediateFlush=true
:表示所有消息都会被立即输出,设为false
则不输出,默认值是true
。Append=false
:true
表示消息增加到指定文件中,false
则将消息覆盖指定的文件内容,默认值是true
。File=D:/logs/mylog.txt
:指定消息输出到mylog.txt
文件中。
3.2.3 DailyRollingFileAppender选项
Threshold=WARN
:指定日志信息的最低输出级别,默认为DEBUG。ImmediateFlush=true
:表示所有消息都会被立即输出,设为false则不输出,默认值是true。Append=false
:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。File=D:/logs/logging.log4j
:指定当前消息输出到logging.log4j文件中。DatePattern='.'yyyy-MM
:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。
另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:
'.'yyyy-MM
:每月'.'yyyy-ww
:每周'.'yyyy-MM-dd
:每天'.'yyyy-MM-dd-a
:每天两次'.'yyyy-MM-dd-HH
:每小时'.'yyyy-MM-dd-HH-mm
:每分钟
3.2.4 RollingFileAppender选项
Threshold=WARN
:指定日志信息的最低输出级别,默认为DEBUG。ImmediateFlush=true
:表示所有消息都会被立即输出,设为false则不输出,默认值是true。Append=false
:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。File=D:/logs/logging.log4j
:指定消息输出到logging.log4j文件中。MaxFileSize=100KB
:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。MaxBackupIndex=2
:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。
3.3 日志输出格式(Layout)
1 | Copylog4j.appender.appenderName.layout=className |
className:可设值如下:
org.apache.log4j.HTMLLayout
(以HTML表格形式布局)org.apache.log4j.PatternLayout
(可以灵活地指定布局模式)org.apache.log4j.SimpleLayout
(包含日志信息的级别和信息字符串)org.apache.log4j.TTCCLayout
(包含日志产生的时间、线程、类别等等信息)
3.3.1 HTMLLayout选项
LocationInfo=true
:输出java文件名称和行号,默认值是false。Title=My Logging
: 默认值是Log4J Log Messages。
3.3.2 PatternLayout选项
ConversionPattern=%m%n
:设定以怎样的格式显示消息。
格式化符号说明:
1 | %p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。 |