【问题标题】:Migrating from log4j to log4j2 - properties file configuration从 log4j 迁移到 log4j2 - 属性文件配置
【发布时间】:2016-06-24 08:33:58
【问题描述】:

我有一个使用 log4j 的 Java 应用程序,配置如下。

log4j.properties:

log4j.rootLogger=INFO, R
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File = /trace.log
log4j.appender.R.Append = true
log4j.appender.R.DatePattern = '.'yyyy-MM-dd
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d{HH:mm:ss} %c{1} [%p] %m%n

我想迁移到具有与上述相同配置的 log4j2。尚未找到与 log4j2 属性配置文件相关的任何内容,因为最近包含此支持。

我的 log4j2.properties 文件与上面的配置相同吗?

【问题讨论】:

    标签: java log4j log4j2


    【解决方案1】:

    Log4j2 支持 .properties 文件,但它们更改了属性语法。您可以查看他们的manual here,它涵盖了创建新配置所需的所有内容。

    【讨论】:

      【解决方案2】:

      您可以使用这个美妙的前端 Web 将您的属性转换为 XML http://log4j-props2xml.appspot.com/

      结果:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
      <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
          <appender name="R" class="org.apache.log4j.DailyRollingFileAppender">
              <param name="Append" value="true"/>
              <param name="DatePattern" value="'.'yyyy-MM-dd"/>
              <param name="File" value="/trace.log"/>
              <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="%d{HH:mm:ss} %c{1} [%p] %m%n"/>
              </layout>
          </appender>
          <root>
              <level value="INFO"/>
              <appender-ref ref="R"/>
          </root>
      </log4j:configuration>
      

      【讨论】:

      • 这又是 log4j 而不是 log4j2。我需要在属性文件中配置 log4j2。
      【解决方案3】:

      这是我在阅读文档并工作后构建的。

      rootLogger.level = INFO
      property.filename = trace.log
      appenders = R, console
      
      appender.console.type = Console
      appender.console.name = STDOUT
      appender.console.layout.type = PatternLayout
      appender.console.layout.pattern = %d %5p [%t] (%F:%L) - %m%n
      
      appender.R.type = RollingFile
      appender.R.name = File
      appender.R.fileName = ${filename}
      appender.R.filePattern = ${filename}.%d{yyyy-MM-dd}
      appender.R.layout.type = PatternLayout
      appender.R.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
      appender.R.policies.type = Policies
      appender.R.policies.time.type = TimeBasedTriggeringPolicy
      appender.R.policies.time.interval = 1
      
      rootLogger.appenderRefs = R, console
      
      rootLogger.appenderRef.console.ref = STDOUT
      rootLogger.appenderRef.R.ref = File
      

      【讨论】:

        【解决方案4】:

        您可以使用它从 Log4J.properties (v1.2) 转换为 log4j2.xml,如下所示:

        1) 使用此转换器将 v1.2 属性转换为 v1.2XML:https://log4j-props2xml.appspot.com/

        2) 使用此链接上提供的过程从 v1.2 XML 转换为 v2.0 XML(即 Log4j2.xml):https://logging.apache.org/log4j/2.x/manual/migration.html

        【讨论】:

          【解决方案5】:

          我知道这是一个老问题,但为了历史:

          从 Log4j2 2.13.0 开始,Log4j 1 配置文件有一个实验性功能: http://logging.apache.org/log4j/2.x/manual/compatibility.html

          相关的 JIRA 问题: https://issues.apache.org/jira/browse/LOG4J2-63

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-10-02
            • 2018-05-08
            • 2020-12-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多