Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。
Logger
Loggers组件被分为七个级别:
级别 | 对应int值 |
---|---|
OFF | 0,这是最高等级,为了关闭日志记录 |
FATAL | 100,指定非常严重的错误事件 |
ERROR | 200 |
WARN | 300 |
INFO | 400 |
DEBUG | 500 |
TRACE | 600 |
ALL | Integer.MAX_VALUE,各级包括自定义级别 |
各个级别的顺序是这样那个的:
OFF < DEBUG < INFO < WARN < ERROR < FATAL < ALL
可以简单地理解为级别越大越重要。 Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR、FATAL和ALL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。
Appender
Appender用来规定日志输出的目的地是哪里,可以是控制台,文件,数据库等等。 常见的Appender有以下几种:
代码语言:javascript复制org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
在配置文件中是这样配置的:
代码语言:javascript复制log4j.appender.appenderName = className
log4j.appender.appenderName.Option1 = value1
…
log4j.appender.appenderName.OptionN = valueN
其中appenderName是Appender的名字,可以随意起,只要满足命名规范就行,Option1,Option2,…,OptionN是这个appender的各种属性。
ConsoleAppender的选项
代码语言:javascript复制Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target=System.err:默认值是System.out。
FileAppender选项
代码语言:javascript复制Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中
bufferedIO 此标志表示是否需要写入缓存启用。默认设置为false
bufferSize 如果 bufferedI/O 启用,这表示缓冲区的大小,默认设置为8KB
DailyRollingFileAppender选项
代码语言:javascript复制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:每分钟