如何在Linux上正确运行log4j,得到一个奇怪的错误

时间:2015-02-27 09:54:54

标签: java logging centos log4j

我最近才开始在我的应用程序中使用Log4j。我正在开发一台Windows机器上的eclipse,但我正在将它部署到运行CentOS的服务器上。

当我在eclipse中运行应用程序时,Log4j按预期工作。 我有一个文件夹/src/main/resources,其中存储了Log4j属性文件,所有内容都已配置,Log4j正确保存日志文件并输出到控制台。

我想,由于属性文件是项目的一部分,它将使用jar进行编译并在我移动时正常执行,但显然情况并非如此。

当我导出jar并在服务器上运行时,Log4j告诉我没有设置配置文件。这让我想到可能文件没有与jar一起导出。

在寻找解决方案时,我遇到了this question并尝试了将此代码添加到主方法的更简单的选项:

String log4jConfPath = "/path/to/log4j.properties";
PropertyConfigurator.configure(log4jConfPath);

成功!!记录器现在可以工作了,我将log4j.properties文件放在服务器上的jar文件旁边并指向它。

现在我收到以下错误:

Log4j Error

...但是日志记录正在运行。 那么这里发生了什么?原来的属性文件是否真的被包含在内,现在被忽略了,因为我指的是另一个? 但如果是这种情况,为什么它会显示为错误?

外部属性文件有问题吗? 如果是这样,为什么现在正在进行测井?

编辑:我正在使用systemd在CentOS中将此应用作为服务运行。仅当我将应用程序作为服务启动时才会出现此错误。如果禁用该服务并将其作为带有sudo java -jar myapp.jar的Java应用程序运行,我不会收到任何错误。

0 个答案:

没有答案