【问题标题】:Converting log4j.properties to log4j.xml [duplicate]将 log4j.properties 转换为 log4j.xml [重复]
【发布时间】:2011-11-16 21:31:07
【问题描述】:

我在任何地方都找不到如何在 log4j.xml 中指定常量。例如,我的 log4j.properties 中有这个常量:

#Log directory
dal.log.dir=/var/log/pojodal/
# Log filename
dal.log.file=pojodal.log

我在属性文件的其他部分使用这些常量如下:

log4j.appender.DRFA1.File=${dal.log.dir}/${dal.log.file}

如何在 log4j.xml 中实现相同的行为?

【问题讨论】:

    标签: java logging configuration log4j


    【解决方案1】:

    您可以转换您的完整 log4j.properties 使用此在线服务,您可以在其中粘贴您的log4j.properties,按转换并复制您的新log4j.xml

    http://log4j-props2xml.appspot.com/

    如果该 webapp 离线...您也可以在自己的 servlet 容器中启动它...您可以在此处找到下载和来源:

    https://github.com/jroyals/log4j-properties-converter/

    log4j.xml中变量的使用:

    这在 answer 到另一个 question 中进行了解释...使用 XML 内部实体 here 并使用 Java 系统属性 here

    【讨论】:

      【解决方案2】:

      您可以将日志文件位置和名称设置为 log4J xml 中的参数元素

      <param name="File" value="C:\\logs\\application\\ApplicationLog.log" />
      

      下面的示例文件:

      <log4j:configuration>
          <appender name="STDOUT" class="org.apache.log4j.RollingFileAppender">
              <param name="File"     value="C:\\logs\\application\\ApplicationLog.${user.name}.log" />
              <param name="MaxFileSize" value="5000KB" />
              <param name="MaxBackupIndex" value="10" />
              <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern"
              value="[%d{yyyy-MMM-dd HH:mm:ss}] [%t] %-5p %c{1}: %m %n" />
              </layout>
              <filter class="org.apache.log4j.varia.LevelRangeFilter">
                  <param name="LevelMin" value="DEBUG"/>
                  <param name="LevelMax" value="FATAL"/>
              </filter>
          </appender>
      
          <root>
              <level value="all" />
              <appender-ref ref="STDOUT"/>
          </root>
      </log4j:configuration>
      

      【讨论】:

      • 但是这些仅适用于附加程序附带的参数,对吗?我需要的是自定义变量,因为我们的 log4j.properties 文件往往会变得凌乱,所以我们希望将所有变量保留在顶部
      • 那么我认为您需要在 log4j.xml 文件之外设置这些。在配置 Log4J 之前,您需要一个单独的属性文件并使用 System.setProperty。然后您可以在整个 log4J.xml 中将它们用作 ${prop1}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 2014-12-30
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多