java - 我的 EAR 中的 WAR 无法正确加载 log4j2,但 JAR 可以

标签 java wildfly ear log4j2

我有这个 skinny-war EAR 文件。它应该包含在 WildFly 8.2.0.Final 应用程序服务器中。

- lib
  - log4j-api-2.1.jar
  - log4j-core-2.1.jar
- META-INF
  - application.xml
  - jboss-app.xml
  - log4j2.xml
  - MANIFEST.MF
- my-ejb.jar
- my-web.war (skinny war)
  - META-INF
    - MANIFEST.MF
  - WEB-INF
    - classes
      - ...
    - lib (empty since skinny war)
  - index.html

当我第一次从 my-web.war 开始记录时,我不断收到此消息:2015-03-04 11:04:22,806 ERROR [stderr] (default task-23 ) 错误 StatusLogger Log4j2 找不到日志记录实现。请将 log4j-core 添加到类路径中。使用 SimpleLogger 登录到控制台... 并且没有消息添加到我的日志文件中。

然而,当我从 my-ejb.jar 开始记录时,我一点问题都没有,随后从 my-web.war 进行的记录也工作正常.

如何在我的 EAR 文件中正确使用/配置 log4j2,这样我就不必关心我的 ejb 文件是否先被调用?

文件,按要求:

我的-ejb.jar/META-INF/MANIFEST.MF:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Olivier
Class-Path: lib/log4j-api-2.1.jar lib/guava-18.0.jar lib/log4j-core-2.
 1.jar lib/log4j-web-2.1.jar
Created-By: Apache Maven 3.2.3
Build-Jdk: 1.8.0_25

my-web.war/META-INF/MANIFEST.MF

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Olivier
Class-Path: lib/log4j-api-2.1.jar lib/guava-18.0.jar lib/log4j-core-2.
 1.jar lib/log4j-web-2.1.jar
Created-By: Apache Maven 3.2.3
Build-Jdk: 1.8.0_25

最佳答案

log4j2.xml 文件必须在类路径中才能找到。

试着把它放在这里:

my-web.war
   WEB-INF
      classes
          log4j2.xml

关于java - 我的 EAR 中的 WAR 无法正确加载 log4j2,但 JAR 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28852017/

相关文章:

java - 使用多线程并行运行多个测试

websphere - 如何从命令行停止/启动特定的 WebSphere 部署的 EAR?

将 EAR 部署到 WebLogic : cvc-complex-type. 2.4c 的 Eclipse 验证错误:预期元素 'module@http://java.sun.com/xml/ns/javaee'

Gradle EAR 与来自其他项目的传递库

java - 为什么 IE 11 浏览器对于 jQuery AJAX POST 请求随机有 Content-Length=0?

java - 使用桌面作为清晰的白板

java - 计算当前浏览页面的用户数

wildfly - 通过 scp 将压缩的 EAR 部署到 Wildfly

java - 如何在 Wildfly 10 上设置 MariaDB JNDI?

java - 生产 EntityManager 抛出 __FIRST_PHASE__ 丢失