使用Java Web Start进行log4j配置

时间:2010-11-19 17:13:46

标签: java log4j jnlp java-web-start

我们的Java WebStart应用程序不包含log4j配置文件;它只是设置了一些硬编码的记录器和追加器。

我希望各个客户能够在某处删除log4j.properties文件,并在故障排除情况下设置自己的自定义日志记录。我可以将log4j.properties文件捆绑到我们应用程序的某个jar中,这将允许配置,但是每个客户端的配置都是相同的,而不是仅影响我要解决的客户端。另外,我无法动态更改设置。

有没有办法可以劫持log4j initialization procedure以使用每个客户端的配置文件?

2 个答案:

答案 0 :(得分:3)

这里的基本问题是Java Web Start严格限制了对计算机的访问。

如果您正在运行已签名的应用程序并且用户允许您完全访问计算机,则应该能够执行此操作。如果没有,则无法使用默认机制log4j执行此操作。

您可能希望编写自己的配置程序,使用Java WebStart API从文件系统读取,然后将其提供给log4j,但它需要一些肘部油脂。

答案 1 :(得分:1)

您可以使用PersistenceService将log4j配置存储在本地用户的计算机上(无需签名),或者至少在启动Web启动应用程序时存储是否加载特殊配置的标志

还有一个FileOpenService,最终用户可以使用该{{1}}打开本地log4j.xml文件,以便即时重新配置日志记录工具。这样,用户可以控制配置,并且可以控制何时何地应用它。

您的应用程序代码使用FileOpenService获取到log4j配置文件的流,然后可以使用DOMConfigurator.configure(InputStream)重新配置log4j。