在JBoss 7.1.1下使用应用程序的Log4J配置

Red*_*gle 8 java logging jboss log4j jboss7.x

我在使用我的XML log4j配置文件中定义的appender进行日志记录时遇到问题.

我在我的EAR的META-INF文件夹上创建了jboss-deployment-structure.xml,没有成功.

JBoss的部署,structure.xml结构为:

<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
    <deployment>
        <exclusions>
            <module name="org.apache.log4j" slot="main"/>
        </exclusions>
    </deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)

我甚至尝试编辑我的standalone.conf.bat文件,添加以下行:

set "JAVA_OPTS=%JAVA_OPTS% -Dorg.jboss.as.logging.per-deployment=false"
Run Code Online (Sandbox Code Playgroud)

我的应用程序部署如下:

-> MyAppEAR.ear
   -> META-INF
      -> MANIFEST.MF
   -> MyAoo.war
      -> META-INF
         -> MANIFEST.MF
         -> jboss-deployment-structure.xml
      -> WEB-INF
         -> web.xml
         -> lib
            -> log4j-1.2.17.jar
            -> ---
         -> classes
            -> log4j.xml
            -> ...
Run Code Online (Sandbox Code Playgroud)

我注意到以下错误:

  • 忽略子部署中的jboss-deployment-structure.xml.jboss-deployment-structure.xml仅针对顶级部署进行解析.

我甚至试过从JBOSS 7.1.0迁移到7.1.1

请帮忙!

谢谢


感谢詹姆斯的收获.

我做了你说的,并将jboss-deployment-structure.xml文件移动到MyAppEAR.ear/META-INF.

我注意到这种方式的异常:

jboss-deployment-structure.xml in subdeployment ignored. jboss-deployment-structure.xml is only parsed for top level deployments.
Run Code Online (Sandbox Code Playgroud)

......不会发生.我不知道这是否意味着文件被解析了......我怎么知道?

尽管有这种新行为,我的log4j.xml配置文件仍未加载,并且使用的记录器仍然是Log4J.

我知道这是因为我写信到控制台:

System.out.println(Logger.getRootLogger().getClass().toString())
Run Code Online (Sandbox Code Playgroud)

......得到了:

class org.jboss.logmanager.log4j.BridgeLogger
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

  • 将我的log4j.xml移动到MyAppEAR.ear/META-INF.
  • standalone.conf.bat中删除不必要的-Dorg.jboss.as.logging.per-deployment = false
  • 从我的jboss-deployment-structure.xml中删除插槽

还有什么想法吗?

谢谢

gYa*_*anI 5

嗨RedEagle看到我测试的以下配置及其工作正常...
步骤1 创建一个新模块

jboss-as-7.1.1.Final/modules/com/company/mylog/main/

                          -module.xml
                          -log4j-1.2.14.jar

Content of  module.xml


 <?xml version="1.0" encoding="UTF-8"?>
      <module xmlns="urn:jboss:module:1.0" name="com.company.mylog">
    <resources>
      <resource-root path="log4j-1.2.14.jar"/>
    </resources>
    <dependencies>
      <module name="javax.api"/>
         </dependencies>
      </module>
Run Code Online (Sandbox Code Playgroud)

步骤2 现在在my.ear/META-INF /

          -jboss-deployment-structure.xml
          -MANIFEST.MF
Run Code Online (Sandbox Code Playgroud)

jboss-deployment-structure.xml的内容

 <jboss-deployment-structure>
              <deployment>

                  <exclusions>
                  <module name="org.apache.log4j" />
                  </exclusions>

              </deployment>


              <sub-deployment name="MyWeb.war">
                    <exclusions>
                    <module name="org.apache.log4j" />
                    </exclusions>
              </sub-deployment>

              <sub-deployment name="MyBeans.jar">
                <exclusions>
                  <module name="org.apache.log4j" />
                </exclusions>
              </sub-deployment>


              </jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)

MANIFEST.MF的内容

        Manifest-Version: 1.0
        Dependencies: com.company.mylog
Run Code Online (Sandbox Code Playgroud)

MyLogger.java的第3步内容

public static Logger getLogger(String name) {

    Logger  logger= LogManager.getLogger(name);
    PropertyConfigurator.configure("log4j.properties"); //Path to log4j.properties as many option available in my case for testing i used static path /home/gyani/log4j.properties
    return logger;
}
Run Code Online (Sandbox Code Playgroud)

步骤4 这是log4j.properties

log4j.rootLogger=info,gyani
log4j.appender.gyani=org.apache.log4j.RollingFileAppender
log4j.appender.gyani.File=/home/gyani/myserverlog.log
log4j.appender.gyani.Append=true
log4j.appender.gyani.MaxFileSize=100000KB
log4j.appender.gyani.MaxBackupIndex=10
log4j.appender.gyani.layout=org.apache.log4j.PatternLayout
log4j.appender.gyani.layout.ConversionPattern=[%d{MMM d HH:mm:ss yyyy}] [%-5p] [%c]: %m%n
Run Code Online (Sandbox Code Playgroud)

  • 谢谢gYanl!那很有效!我甚至不需要采取所有这些步骤.我所做的只是在EAR的META-INF文件夹上创建jboss-deployment-structure.xml. (2认同)