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