-->

Log4J的不记录任何东西(Log4J does not log anything)

2019-09-18 19:53发布

我只是在一个应该使用Log4J的记录其活动的工作拿起一个现有的Web应用程序。 我已经配置了我的工作空间正是因为有人告诉我,和其他一切(DB连接,认证等)工作正常,只是没有被写入日志文件。 其他类似的应用程序有没有问题记录。

我看了WebSphere控制台应用程序启动时并没有错误,有可能表明为什么Log4J的是不记录。

我提到这又是一个设备(谁曾经在这个应用程序的工作,但没一会儿,更过时比我就可以了),谁说过,这是非常奇怪的行为,但不知道为什么它可能无法登录而没有报告任何错误。

我已经在配置文件和属性文件, 一切正常。 我怀疑Log4J的是从来没有阅读的log4j.xml,但我不能肯定这一点。 它已经有一段时间,因为我已经有工作Log4J的 - 没有任何人有对故障排除这类问题的一些好的建议?

PS:有这个应用程序部署到各种测试/ QA /生产服务器和这些实例的所有日志精细的实例。 这只是在本地工作站记录似乎静默失败。


更新:所以这似乎是与部署应用程序的方式有问题。 我改变了类加载器模式,以“家长最后”,我可以看到Log4J的文件至少现在正在阅读。 我尝试的第一个动作触发ClassNotFoundException话说, org.apache.commons.logging.impl.Log4jFactory无法找到。


第二次更新:我已经发现了一些奇怪...应用程序有两种WAR项目-其中之一就是对UI,另一个是对于某些Web服务。 这是该UI的项目成功登录其操作的日志文件。 该网站的服务项目是失败,出现了一个ClassNotFoundException 。 他们都有列为JavaEE的模块依赖的commons-logging.jar,和他们都没有具体的项目,日志配置(所有配置文件都在一个资源项目)。

一个主要的区别在于UI项目包括一些其他的内部框架(预编译的JAR如) 可能已包括必要的日志记录配置,也许这就是差别。

我也试着使用应答(一个在命名org.apache.commons.logging.LogFactory META-INF /服务包含一行文件:“org.apache.commons.logging.impl.Log4jFactory”)从这个问题: websphere的所有日志要SystemOut.log中 ,但它似乎并没有帮助。

Answer 1:

看到这个答案: 如何正确初始化log4j的?

-Dlog4j.debug是这样的问题是非常有用的



Answer 2:

我改变了这一切终于得到了记录正常工作最近的事情正在发生变化的类加载器模式“PARENT_FIRST”和WAR类加载器策略,以“应用程序”。 初始缺省配置是“PARENT_FIRST” /“模块”。 我改成了“PARENT_LAST” /在同事的建议“应用程序”谁说记录正常工作对他们来说,这是他们,当他们创建此应用程序的新的沙箱,使唯一的变化。 我不知道为什么,我不得不去与“PARENT_FIRST” /“应用程序”,但至少现在的工作。


更新:

我试图建立一个新的工作区和我有同样的问题。 事实证明,你需要“PARENT_FIRST” /“应用程序”,并在名为org.apache.commons.logging.LogFactory文件包含一行META-INF /服务:“org.apache.commons.logging.impl.Log4jFactory” 。 不具有该文件的原因记录到失败(通常与一个消息,指出一个Log4J的不能被找到)。



Answer 3:

我知道这是不是你的完全一样的症状,但如果您的应用程序(或任何它使用)使用通用日志存在的一些已知的log4j的问题。 看看这个问题/答案是相关的。



Answer 4:

我曾在那里的log4j不显示在我的项目之一任何问题。 原来我已经添加在log4j2.xml文件中的类名的主要空间。 Log4j的通过类名做一个字典查找。 所以在类名开头或结尾空间将呈现的是特定的条目无效。



Answer 5:

无法创建日志文件,我已经使用logback.xml文件在春季Web服务应用程序,并部署到WebSphere服务器......但是,当我用log4j.properties文件被创建日志文件。 我已经给适当的依赖于正确的log4j和SLF4J .. logback.xml文件

<file>C:/abc/myLogFile.log</file>
<append>true</append>
<encoder>
  <pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder></appender>

`

依赖性:

<dependency>
    <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback.version}</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>${logback.version}</version>
    </dependency>


文章来源: Log4J does not log anything