Java 我耳边的战争没有';不能正确加载log4j2,但JAR会正确加载

Java 我耳边的战争没有';不能正确加载log4j2,但JAR会正确加载,java,wildfly,ear,log4j2,Java,Wildfly,Ear,Log4j2,我有一个骨瘦如柴的战争耳朵锉刀。它应该包含在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

我有一个骨瘦如柴的战争耳朵锉刀。它应该包含在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:22806 ERROR[stderr](默认任务23)ERROR status logger Log4j2找不到日志实现。请将log4j核心添加到类路径。使用SimpleLogger登录到控制台…
,没有消息添加到我的日志文件中

然而,当我从
myejb.jar
开始登录时,我一点问题都没有,从
myweb.war
开始的后续登录也可以正常工作

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

文件,按要求:

my-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

my-ejb.jar MANIFEST.MF是否包含log4j jar的相对类路径?如果您想使用自己的log4j配置,请将文件log4j2.xml放在ear的根目录下,并将jboss-app.xml放在ear的META-INF文件夹中,其中包含以下内容:

<jboss-app>
<loader-repository>
org.myapp:loader=MyClassLoader
<loader-repository-config>
  java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
</jboss-app>

org.myapp:loader=MyClassLoader
java2ParentDelegation=false

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

试着把它放在这里:

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

注意,我也尝试过添加log4j-web-2.1.jar。您尝试过从WAR清单中删除
类路径吗?它可能正在尝试查找
WEB-INF/lib
。您的清单类路径条目既冗余又不正确<代码>JAR格式文件(例如.JAR文件、.war文件或.rar文件)可以通过在引用JAR文件的清单文件的类路径头中命名被引用的.JAR文件或目录来引用.JAR文件或目录。引用的.jar文件或目录名为**,使用的URL与引用的jar文件的URL相对。**
EAR/lib目录中的jar文件应该不带清单类路径entriest,谢谢您的回答。实际上,my-ejb.jar中的MANIFEST.MF确实包含类路径和相对路径。我将log4j2.xml移到了ear的根目录,并修改了jboss-app.xml以包含您编写的内容,将
MyClassLoader
修改为
myapp.ear
,这是我的ear文件的名称。但是在所有这些更改之后,问题仍然存在。修改后控制台日志是否更改?您可以显示它吗?当然我可以显示它,但它一点也没有改变:
2015-03-04 12:04:26988错误[stderr](默认任务-41)错误状态记录器Log4j2找不到日志实现。请将log4j核心添加到类路径。使用SimpleLogger登录控制台…
能否从my-ejb.jar和my-web.war显示MANIFEST.MF?此答案提供适合JBossAS 5和6的jboss-app.xml内容。在WildFly和JBossAS 7.x中,它将被忽略。在WildFly 10中,我们可以将此文件放在哪里,以便全局配置日志记录?