如何在Java中的log4j.xml文件中使用.properties文件中的值

时间:2014-04-23 10:50:46

标签: xml logging properties log4j

我想在log4j.xml文件中使用.properties文件中的值 实际上想在log4j.xml文件中设置参数值;

就像Spring中有一些PropertyPlaceholderConfigurer 我可以在log4j.xml中使用什么? 任何形式的指导或建议都是值得赞赏的 谢谢!

1 个答案:

答案 0 :(得分:0)

我知道这个问题很老,但希望有人绊倒这个问题,发现以下内容很有用。 Log4j支持属性替换,因此您可以使用存储在log4j XML配置文件中的属性或ini文件中的值。请参阅Apache documentation的前缀部分。

我使用.ini文件执行了属性替换。您也应该可以使用.properties文件轻松完成相同的操作。以下是使用properties / ini值动态设置日志文件路径的方法:

//for an .ini file using org.ini4j.Wini
ini = new Wini(new File(args[0]));
System.setProperty("log_dir", ini.get("yourSubHeader", "yourPropertyName"));

//for a .properties file
prop.load(input); //using a FileInputStream
System.setProperty("log_dir", prop.getProperty("yourPropertyName"));

设置系统属性后,可以使用sys前缀通过以下内容在XML配置文件中检索此值:

<Properties>
    <Property name="log-path" >${sys:log_dir}</Property>
    <!-- other properties here -->
</Properties>

希望这对任何想知道同样问题的人都有帮助。