我们将 Log4j 1.2.15 与普通 Swing 应用程序捆绑在一起,并在启动时从文件系统加载我们自己的属性文件:
import org.apache.log4j.*;
...
System.setProperty("log4j.defaultInitOverride", "true");
...
File log4jPropertiesFile = ...
PropertyConfigurator.configure(log4jPropertiesFile.getAbsolutePath());
...
Run Code Online (Sandbox Code Playgroud)
在我们从客户那里获得的日志中,输出看起来不像我们在属性文件中定义的那样,我们确信只有极少数人自己编辑了该文件。
如果用户计算机上存在另一个可用的配置文件,Log4j 是否会以某种方式覆盖我们的设置?我们如何防止使用它?
文档中有整整一段详细说明了 Log4j 如何初始化自身:
确切的默认初始化算法定义如下:
诚然,这是非常难以理解的。基本上,您可以做的最简单的事情就是将其放在应用程序的log4j.properties 类路径中,然后就会找到它。其他一切都是……技巧。就我个人而言,我有时会显式调用BasicConfigurator我的类main,有时会配置(硬编码)一些可能出现在文件中的内容......无论我的情况需要什么。您可以完全以编程方式初始化 log4j,这会使配置文件的问题变得毫无意义。尽管它也会使您的配置完全不那么灵活。
| 归档时间: |
|
| 查看次数: |
4791 次 |
| 最近记录: |