log4j - 配置

  • 简述

    上一章讲解了log4j的核心组件。本章解释了如何使用配置文件配置核心组件。配置 log4j 涉及在配置文件中分配 Level、定义 Appender 和指定 Layout 对象。
    log4j.propertiesfile 是一个 log4j 配置文件,它将属性保存在键值对中。默认情况下,LogManager 查找名为的文件log4j.properties 在里面 CLASSPATH.
    • 根记录器的级别定义为 DEBUG. 这DEBUG 将名为 X 的 appender 附加到它。
    • 将名为 X 的 appender 设置为有效的 appender。
    • 设置 appender X 的布局。
  • log4j.properties 语法:

    以下是appender X的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
    
  • log4j.properties 示例

    使用上述语法,我们在 log4j.properties 文件:
    • 根记录器的级别定义为 DEBUG, 这 DEBUG 命名的附加程序 FILE 到它。
    • 附加程序 FILE 被定义为 org.apache.log4j.FileAppender. 它写入名为的文件log.out 位于 log 目录。
    • 定义的布局模式是%m%n,这意味着打印的日志消息将跟随一个换行符。
    
    # Define the root logger with appender file
    log4j.rootLogger = DEBUG, FILE
    # Define the file appender
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=${log}/log.out
    # Define the layout for file appender
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.conversionPattern=%m%n
    
    需要注意的是,log4j 支持 UNIX 风格的变量替换,例如 ${variableName}。
  • 调试级别

    我们在两个 appender 中都使用了 DEBUG。所有可能的选项是:
    • TRACE
    • DEBUG
    • INFO
    • WARN
    • ERROR
    • FATAL
    • ALL
    本教程稍后将解释这些级别。
  • 附加程序

    Apache log4j 提供 Appender 对象,主要负责将日志消息打印到不同的目的地,如控制台、文件、套接字、NT 事件日志等。
    每个 Appender 对象都有与之关联的不同属性,这些属性指示该对象的行为。
    属性 描述
    layout Appender 使用 Layout 对象和与它们关联的转换模式来格式化日志信息。
    target 目标可能是控制台、文件或其他项目,具体取决于附加程序。
    level 需要该级别来控制日志消息的过滤。
    threshold Appender 可以有一个与记录器级别无关的阈值级别。Appender 忽略级别低于阈值级别的任何日志消息。
    filter Filter 对象可以分析级别匹配之外的日志信息,并决定日志请求应该由特定的 Appender 处理还是忽略。
    我们可以通过使用以下方法在配置文件中包含以下设置,将 Appender 对象添加到 Logger:
    
    log4j.logger.[logger-name]=level, appender1,appender..n
    
    您可以使用 XML 格式编写相同的配置,如下所示:
    
    <logger name="com.apress.logging.log4j" additivity="false">
       <appender-ref ref="appender1"/>
       <appender-ref ref="appender2"/>
    </logger>
    
    如果您愿意在程序中添加 Appender 对象,则可以使用以下方法:
    
    public void addAppender(Appender appender);
    
    addAppender() 方法向 Logger 对象添加一个 Appender。正如示例配置所示,可以将许多 Appender 对象添加到逗号分隔列表中的记录器中,每个对象将日志信息打印到不同的目的地。
    在上面的示例中,我们只使用了一个 appender FileAppender。所有可能的附加程序选项是:
    • AppenderSkeleton
    • AsyncAppender
    • ConsoleAppender
    • DailyRollingFileAppender
    • ExternallyRolledFileAppender
    • FileAppender
    • JDBCAppender
    • JMSAppender
    • LF5Appender
    • NTEventLogAppender
    • NullAppender
    • RollingFileAppender
    • SMTPAppender
    • SocketAppender
    • SocketHubAppender
    • SyslogAppender
    • TelnetAppender
    • WriterAppender
  • 布局

    我们在 appender 中使用了 PatternLayout。所有可能的选项是:
    • DateLayout
    • HTMLLayout
    • PatternLayout
    • SimpleLayout
    • XMLLayout
    使用 HTMLLayout 和 XMLLayout,您可以生成 HTML 和 XML 格式的日志。
  • 布局格式

    您将在之后章节中学习如何格式化日志消息