【问题标题】:log4j not working on Linux server but works on Eclipse Windowslog4j 不能在 Linux 服务器上运行,但可以在 Eclipse Windows 上运行
【发布时间】:2019-03-07 13:37:10
【问题描述】:

我正在使用 Eclipse Oxygen 2,并且我有一个 Maven 项目,我试图通过 RHEL 服务器上的 shell 脚本将其作为 JAR 运行。它运行正常,但日志记录不起作用。

我在运行 JAR 时收到这些警告。

log4j:WARN No appenders could be found for logger (com.foo.bar.foo.bar).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我将 log4j 用作本地 Eclipse 存储库的 Maven 依赖项,这可能是问题所在吗?如果是这样,我将如何让 jar 在 RHEL 服务器上使用我的工具?

【问题讨论】:

  • 路径权限呢?
  • @Joe 这是日志文件的路径,还是 jar 的路径?
  • 这是一种可能,我不确定是路径权限的问题,无论如何值得一试,看看this answer 并将路径更改为非根目录,然后走着瞧吧。让我知道结果是什么兄弟。
  • 你读过logging.apache.org/log4j/1.2/faq.html#noconfig了吗?使用 log4j 需要两个配置文件:log4j.properties 和 log4j.xml。它们是否存在于您部署的实例中并位于正确的位置?
  • @CPerkins 它在没有 log4j.xml 的 Eclipse 上运行良好。我只有属性文件

标签: java eclipse maven logging log4j


【解决方案1】:

当您没有 log4j 库的配置文件时,该错误很常见。该库确实在工作(正是它发出了该错误消息,但正如它所说,仅(在 stderr 上)只会显示错误(及以上)消息)。只需创建一个有效的配置文件并将其放在应用程序的类路径中的任何位置,您就会从 log4j 中获得最佳效果。

顺便说一句,该库建议您访问 apache 站点以获取更多文档。你到过那里吗?我从 Apache 网站了解了有关该库的所有信息。

【讨论】:

  • 您好,感谢您的回答。当我在本地 eclipse 上运行它时,我的 log4j.properties 工作正常,但是当我提取我的项目的 jar 并在 Linux 机器上运行它时,这就是我得到错误的地方。我需要将 log4j jar 放在服务器中吗?
  • 把它放在类路径中。例如在项目的 META-INF 目录中。或者在项目的主目录中(从 eclipse 运行它)。顺便说一句,它要求com.foo.bar.foo.bar 你有根记录器吗?您的代码中是否定义了该类/包?
  • 我在 /src/main/resources 中有它,我确定我已将它添加到类路径中
  • 试着把它放到项目主目录的/src上面。源文件夹不包含在 Linux 的类路径中。我不使用 Windows ......但是 Linux,我有它....../src/test
  • 找到正确的目录有点奇怪...尝试源的基本目录、主目录和 META-INF 目录,以防万一。