我无法在任何地方找到如何在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中实现相同的行为?
答案 0 :(得分:7)
您可以转换完整 log4j.properties
使用此在线服务,您可以粘贴log4j.properties
,按转换并复制新{ {1}}:
http://log4j-props2xml.appspot.com/
如果该webapp处于脱机状态......您也可以在自己的servlet容器中启动它...您可以在此处找到下载和来源:
https://github.com/jroyals/log4j-properties-converter/
log4j.xml
中使用变量:使用 XML内部实体 answer并使用 Java系统属性question到另一个here ...中对此进行了解释> here。
答案 1 :(得分: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>