log4j实践
log4j组成
- loggers:负责采集日志信息
- appenders:负责将日志信息发布到不通地方
- layouts:负责以各种风格格式化日志信息
log4j配置例子
Log4j.properties文件是Log4j的配置文件。默认情况下,LogManager会在CLASSPATH中寻找Log4j.properties文件。
log4j.properties的例子
# Define the root logger with appender X
Log4j.rootLogger = DEBUG, X
# Set the appender named X to be a File appender
Log4j.appender.X=org.apache.Log4j.FileAppender
# Define the layout for X appender
Log4j.appender.X.layout=org.apache.Log4j.PatternLayout
Log4j.appender.X.layout.conversionPattern=%m%n
- 根据日志级别定义为DEBUG,并将名为 X 的appender添加其上.
- 将名为 X 的appender 设置为合法的 appender
- 设置 appender X 的layout
使用文件记录日志
上面的conversionPattern其实是org.apache.Log4j.PatternLayout类中的一个属性,下面会将FileAppender中的属性设置
FileAppender 配置
FileAppender 拥有如下配置参数
属性 | 描述 |
---|---|
immediateFlush | 该标志位默认为 true,意味着每次日志追加操作都将输出流刷新至文件。 |
encoding | 可以使用任何编码,默认情况下使用平台相关的编码。 |
threshold | appender 对象的阀值。 |
Filename | 日志文件名。 |
fileAppend | 该值默认为 true,其含义是让日志追加至文件末尾。 |
bufferedIO | 该标志位表示是否打开缓冲区写,缺省为 false。 |
bufferSize | 如果开启缓冲区 I/O,该属性指示缓冲区大小,缺省为 8 kb。 |
下面是一个使用 FileAppender 的示例配置文件Log4j.properties:
# Define the root logger with appender file
Log4j.rootLogger = DEBUG, FILE
# Define the file appender
Log4j.appender.FILE=org.apache.Log4j.FileAppender
# Set the name of the file
Log4j.appender.FILE.File=${log}/log.out
# Set the immediate flush to true (default)
Log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
Log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite
Log4j.appender.FILE.Append=false
# Define the layout for file appender
Log4j.appender.FILE.layout=org.apache.Log4j.PatternLayout
Log4j.appender.FILE.layout.conversionPattern=%m%n