log4cxx 的配置是通过以下方式从后续 xml 读取的:
DOMConfigurator::configure("log4cxx.xml");
但是,想要在运行时设置文件名,这会产生一个问题,即要么有多个 .xml 用于读取,要么动态创建一个(在内存/磁盘中——无论在哪里)。
<appender name="appxNormalAppender" class="org.apache.log4j.FileAppender">
<param name="file" value="appxLogFile.log" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t:%x] %C{2} (%F:%L) - %m%n" />
</layout>
</appender>
有没有办法<param file="file" value="%%value%%" />
在配置和更改后将一些值传递给配置器以替换或访问属性?
PS这样做的原因:同一个程序的多个副本正在写入同一个日志,使它看起来很奇怪。如何在不发明太多自行车的情况下以传统方式使用 log4j/log4cxx 避免这种情况?