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.