自定义位置中的Log4j属性

时间:2009-05-17 22:35:40

标签: java properties log4j propertyconfigurator

我正在使用Apache Commons Logging和SLF4J和log4j,但我也想在conf / log4.properties这样的自定义位置使用log4j.properties。这是问题所在:

如果我使用

  PropertyConfigurator.configure("conf/log4j.properties");

然后我的应用程序与log4j绑定并且无法实现ACL和SLF4J的目的。

在没有应用程序知道日志记录实现是什么的情况下配置它的最佳方法是什么?

3 个答案:

答案 0 :(得分:26)

我认为最简单的方法是使用 log4j.configuration 系统属性指定文件的位置。采用Log4J manual中的示例:

java -Dlog4j.configuration=conf/log4j.properties -classpath ...

我相信Log4J会在类路径的任何地方找到一个名为“log4j.properties”的文件,但可能会产生幻觉。值得一试。

答案 1 :(得分:3)

正如您所说,通过调用PropertiesConfigurator,您将应用程序绑定到log4j。然而,这种联系的延伸是非常有限的。您可以非常轻松地删除调用PropertiesConfigurator的行并重新编译代码。完成之后,假设您使用SLF4J API进行日志记录,您可以使用另一个日志框架重新记录log4j,例如logback-classic或j.u.l.只需替换jar文件。因此,SLF4J仍然在很大程度上达到其目的。我不会用洗澡水把婴儿扔出去。

答案 2 :(得分:1)

您可以使用VM参数

指定配置文件位置

-Dlog4j.configuration="file:/C:/workspace3/local/log4j.properties"