我使用Eclipse和我已经把log4j.properties在项目目录中,我通过调用访问
PropertyConfigurator.configure("log4j.properties");
这工作正常在Eclipse中,但是当我提取项目作为一个可执行的JAR和另一台机器上运行它,我得到一个错误,指出它无法找到log4j.properties。 如何解决这个?
我使用Eclipse和我已经把log4j.properties在项目目录中,我通过调用访问
PropertyConfigurator.configure("log4j.properties");
这工作正常在Eclipse中,但是当我提取项目作为一个可执行的JAR和另一台机器上运行它,我得到一个错误,指出它无法找到log4j.properties。 如何解决这个?
PropertyConfigurator.configure(String)
负载和读取文件系统中的文件。 你的属性文件是在项目目录,当您从Eclipse中运行这将是“当前工作目录”。
一旦你的一切打包成一个罐子,并部署它 - 唯一的类文件和“资源”放入罐子。 资源非Java文件,这些文件的源代码树底下。
您复制到另一台机器的jar文件后,在属性文件不再左右。
由于您的属性文件是不是一种资源,你需要单独移动它:把它的文件系统上的副本(因此它可以编辑,更新等),在目标主机的当前工作目录/运行环境。
考虑将其放置在文件系统中的一些常见的区域:例如,在/tmp/log4j.properties或〜/ .myproject / log4j.properties。 您的代码将不得不进行调整,以寻找它,因此。
复制属性文件到源树的根(/ SRC,是默认值)。 那么它应该是包装在瓶子里。 加载jar文件作为资源数据: PropertyConfigurator.configure(getClass().getResourceAsStream())
。
在这种情况下,你不能简单地编辑该文件来调整你的日志偏好。
多次逻辑将被写入,以确定是否一个属性文件是文件系统上,并且如果没有则通过此机制加载从罐子的缺省值。
PropertyConfigurator.configure(ABC.class.getResourceAsStream("log4j.properties"))
我工作正常,但基本上你需要的地方Log4j
特性在源代码文件夹(旁边的Java Class)文件,或者你可以尝试把外面,并给予正确的路径中getResourceAsStream()
方法