我正在使用eclipse,我已将log4j.properties放在项目目录中,我通过调用
来访问它PropertyConfigurator.configure("log4j.properties");
这在Eclipse中运行良好,但是当我将项目作为可执行Jar提取并在另一台机器上运行时,我收到一条错误消息,说它无法找到log4j.properties。解决方案是什么?
答案 0 :(得分:7)
PropertyConfigurator.configure(String)
从文件系统加载并读取文件。您的属性文件位于项目目录中,当您从eclipse运行时,它将是“当前工作目录”。
将所有内容打包到jar中并进行部署后,只将类文件和“资源”放入jar中。资源是源树下的非java文件。
将jar文件复制到另一台计算机后,属性文件不再存在。
由于您的属性文件不是资源,因此您需要单独移动它:在您当前的工作目录中将其副本放在文件系统上(以便进行编辑,更新等)目标主机/运行时环境。
考虑将其放在文件系统的某个公共区域中:例如在/tmp/log4j.properties或〜/ .myproject / log4j.properties中。 因此,您的代码必须进行调整以寻找它。
将属性文件复制到源树的根目录(/ src,默认值)。然后将它包装在罐子里。将数据作为资源加载到jar文件中:PropertyConfigurator.configure(getClass().getResourceAsStream())
。
在这种情况下,您无法简单地编辑文件来调整日志记录首选项。
很多时候会编写逻辑来确定属性文件是否在文件系统上,如果没有,则通过这种机制从jar加载默认值。
答案 1 :(得分:0)
PropertyConfigurator.configure(ABC.class.getResourceAsStream("log4j.properties"))
正确地工作了,但基本上你需要将Log4j
属性文件放在源代码文件夹(Java类旁边)中,或者你可以尝试放在外面并在getResourceAsStream()
方法中给出正确的路径