log4j - 日志写入文件
-
简述
要将日志信息写入文件,您必须使用 org.apache.log4j.FileAppender. -
FileAppender 配置
FileAppender 具有以下可配置参数:属性 描述 immediateFlush 默认情况下,此标志设置为 true,这意味着每个附加操作都会刷新文件的输出流。 encoding 可以使用任何字符编码。默认情况下,它是特定于平台的编码方案。 threshold 此 appender 的阈值级别。 Filename 日志文件的名称。 fileAppend 这默认设置为 true,这意味着将日志信息附加到同一文件的末尾。 bufferedIO 此标志指示我们是否需要启用缓冲写入。默认情况下,它设置为 false。 bufferSize 如果启用缓冲 I/O,则指示缓冲区大小。默认情况下,它设置为 8kb。 以下是示例配置文件 log4j.properties 对于 FileAppender -# 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
如果您希望有一个与上述等效的 XML 配置文件 log4j.properties 文件,然后这里是内容:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration> <appender name="FILE" class="org.apache.log4j.FileAppender"> <param name="file" value="${log}/log.out"/> <param name="immediateFlush" value="true"/> <param name="threshold" value="debug"/> <param name="append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="conversionPattern" value="%m%n"/> </layout> </appender> <logger name="log4j.rootLogger" additivity="false"> <level value="DEBUG"/> <appender-ref ref="FILE"/> </logger> </log4j:configuration>
-
登录多个文件
出于某些原因,您可能希望将日志消息写入多个文件,例如,如果文件大小达到某个阈值。要将日志信息写入多个文件,您必须使用 org.apache.log4j.RollingFileAppender 扩展的类 FileAppender 类并继承其所有属性。除了上面提到的 FileAppender 参数之外,我们还有以下可配置参数 -属性 描述 最大文件大小 这是文件将滚动到的临界大小。默认值为 10 MB。 最大备份索引 此属性表示要创建的备份文件数。默认值为 1。 以下是示例配置文件 log4j.properties 对于 RollingFileAppender。# Define the root logger with appender file log4j.rootLogger = DEBUG, FILE # Define the file appender log4j.appender.FILE=org.apache.log4j.RollingFileAppender # 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, should not overwrite log4j.appender.FILE.Append=true # Set the maximum file size before rollover log4j.appender.FILE.MaxFileSize=5MB # Set the the backup index log4j.appender.FILE.MaxBackupIndex=2 # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
如果您希望有一个 XML 配置文件,您可以生成与初始部分中提到的相同的文件,并仅添加与 RollingFileAppender.此示例配置表明每个日志文件的最大允许大小为 5 MB。超过最大大小时,将创建一个新的日志文件。自从maxBackupIndex 定义为2,一旦第二个日志文件达到最大大小,第一个日志文件将被擦除,之后所有日志信息将回滚到第一个日志文件。 -
每日日志文件生成
可能需要每天生成日志文件以保持日志信息的干净记录。要将日志信息每天写入文件,您必须使用 org.apache.log4j.DailyRollingFileAppender 扩展的类 FileAppender 类并继承其所有属性。除了上面提到的 FileAppender 参数之外,只有一个重要的可配置参数:属性 描述 日期模式 这指示何时翻转文件和要遵循的命名约定。默认情况下,翻转在每天午夜执行。 DatePattern 使用以下模式之一控制翻转计划:日期模式 描述 '.' yyyy-MM 在每个月的月底和下个月的月初滚动。 '.' yyyy-MM-dd 每天午夜翻身。这是默认值。 '.' yyyy-MM-dd-a 在每天的中午和午夜翻身。 '.' yyyy-MM-dd-HH 在每小时的顶部翻滚。 '.' yyyy-MM-dd-HH-mm 每分钟翻一次身。 '.' yyyy-ww 根据区域设置在每周的第一天滚动。 以下是示例配置文件 log4j.properties 生成在每天中午和午夜滚动的日志文件。# Define the root logger with appender file log4j.rootLogger = DEBUG, FILE # Define the file appender log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender # 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, should not overwrite log4j.appender.FILE.Append=true # Set the DatePattern log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
如果您希望有一个 XML 配置文件,您可以生成与初始部分中提到的相同的文件,并仅添加与 DailyRollingFileAppender.