log4j 日志文件——迹忆客-ag捕鱼王app官网
要将日志信息写入文件,我们必须使用 org.apache.logging.log4j.fileappender
。
fileappender 配置
fileappender
具有以下可配置参数:
属性 | 描述 |
---|---|
immediateflush | 此标志默认设置为 true,这意味着文件的输出流被每次追加操作刷新。 |
encoding | 可以使用任何字符编码。 默认情况下,它是特定于平台的编码方案。 |
threshold | 此附加程序的阈值级别。 |
filename | 日志文件的名称。 |
fileappend | 默认情况下设置为 true,这意味着日志信息将附加到同一文件的末尾。 |
bufferedio | 此标志指示我们是否需要启用缓冲写入。 默认情况下,它设置为 false。 |
buffersize | 如果启用缓冲 i/o,则表示缓冲区大小。 默认情况下,它设置为 8kb。 |
以下是 fileappender
的示例配置文件 log4j2.properties
property.filename = /workspace/java/log4j
#
appender.infofile.type = file
appender.infofile.name = infologfile
#
appender.infofile.filename=${filename}/log.out
appender.infofile.layout.type = patternlayout
appender.infofile.immediateflush=true
appender.infofile.threshold=debug
appender.infofile.append=false
appender.infofile.layout.pattern=[%-5level] %d{yyyy-mm-dd hh:mm:ss.sss} %c{1} [%t] - %m%n
rootlogger.level = warn
rootlogger.appenderref.infofile.ref = infologfile
rootlogger.appenderref.infofile.level = warn
我们可以尝试使用上述配置的 log4j 示例程序
多个日志文件
出于某些原因,我们可能希望将日志消息写入多个文件,例如,如果文件大小达到某个阈值。
要将日志信息写入多个文件,我们必须使用扩展 fileappender
类并继承其所有属性的 org.apache.logging.log4j.rollingfileappender
类。
除了上面提到的 fileappender
之外,我们还有以下可配置的参数
属性 | 描述 |
---|---|
maxfilesize | 这是文件将滚动到的文件的临界大小。 默认值为 10 mb。 |
maxbackupindex | 该属性表示要创建的备份文件的数量。 默认值为 1。 |
以下是 rollingfileappender
的示例配置文件** log4j2.properties** 。
property.filename = /workspace/java/log4j
#
appender.infofile.type = file
appender.infofile.name = infologfile
#
appender.infofile.filename=${filename}/log.out
appender.infofile.layout.type = patternlayout
appender.infofile.immediateflush=true
appender.infofile.threshold=debug
appender.infofile.append=true
appender.infofile.layout.pattern=[%-5level] %d{yyyy-mm-dd hh:mm:ss.sss} %c{1} [%t] - %m%n
appender.infofile.maxfilesize=5mb
appender.infofile.maxbackupindex=2
rootlogger.level = warn
rootlogger.appenderref.infofile.ref = infologfile
rootlogger.appenderref.infofile.level = warn
此示例配置演示每个日志文件的最大允许大小为 5 mb。 超过最大大小后,将创建一个新的日志文件。 由于 maxbackupindex 定义为 2,一旦第二个日志文件达到最大大小,第一个日志文件将被擦除,此后所有日志信息将回滚到第一个日志文件。
我们可以尝试使用上述配置的 log4j 示例程序。
daily 日志文件生成
可能需要每天生成日志文件,以保持日志信息的干净记录。
要每天将日志信息写入文件,我们必须使用扩展 fileappender
类并继承其所有属性的 org.apache.logging.log4j.dailyrollingfileappender
类。
除了上面提到的 fileappender 之外,只有一个重要的可配置参数:
属性 | 描述 |
---|---|
datepattern | 这指示何时滚动文件以及要遵循的命名约定。 默认情况下,滚动在每天午夜执行。 |
datepattern 使用以下模式之一控制滚动计划:
datepattern | 描述 |
---|---|
'.' yyyy-mm | 在每个月底和下个月的月初刷新。 |
'.' yyyy-mm-dd | 每天午夜刷新。 这是默认值。 |
'.' yyyy-mm-dd-a | 在每天的中午和午夜刷新。 |
'.' yyyy-mm-dd-hh | 每小时结束时刷新。 |
'.' yyyy-mm-dd-hh-mm | 每分钟刷新一次 |
'.' yyyy-ww | 根据地区,在每周的第一天刷新。 |
以下是一个示例配置文件 log4j2.properties
,用于在每天的中午和午夜生成刷新的日志文件。
property.filename = /workspace/java/log4j
#
appender.infofile.type = file
appender.infofile.name = infologfile
#
appender.infofile.filename=${filename}/log.out
appender.infofile.layout.type = patternlayout
appender.infofile.immediateflush=true
appender.infofile.threshold=debug
appender.infofile.append=true
appender.infofile.layout.pattern=[%-5level] %d{yyyy-mm-dd hh:mm:ss.sss} %c{1} [%t] - %m%n
appender.infofile.maxfilesize=5mb
appender.infofile.maxbackupindex=2
# 设置 datepattern
log4j.appender.file.datepattern='.' yyyy-mm-dd-a
rootlogger.level = warn
rootlogger.appenderref.infofile.ref = infologfile
rootlogger.appenderref.infofile.level = warn
我们可以尝试使用上述配置的 log4j 示例程序 。