Logback不能与JBoss EAP 6.1一起使用

时间:2013-12-07 18:50:52

标签: maven jboss logback

我有一个maven web应用程序,我在其中使用logback和JBoss EAP 6.1作为服务器。问题是当我在服务器上部署它时,我的logback.xml被忽略,并且使用了logback的默认配置,它在控制台而不是我的日志文件上打印。如果我在tomcat上部署我的应用程序,日志工作正常。

我已将logback.xml放在src / main / resources中。

在 - Logging Configuration in Logback + SL4J + JBoss EAP 6.0找到了类似的问题 和 Logback and Jboss 7 - don't work together? 但没有用......

2 个答案:

答案 0 :(得分:7)

忘记早点分享解决方案......它是 -

我们需要在jboss-deployment-structure.xml

中添加以下行
<exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.slf4j" />
            <module name="org.slf4j.ext" />
            <module name="org.slf4j.impl" />
            <module name="org.apache.log4j" />
</exclusions>

所以整个文件看起来像 -

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <!-- Exclusions allow you to prevent the server from automatically adding 
            some dependencies -->
        <exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.slf4j" />
            <module name="org.slf4j.ext" />
            <module name="org.slf4j.impl" />
            <module name="org.apache.log4j" />
        </exclusions>

    </deployment>
</jboss-deployment-structure>

如果您有maven项目,可以将此文件放在 -

<project>/webapp/META-INF/jboss-deployment-structure.xml

现在日志记录工作正常。

答案 1 :(得分:2)

首先,感谢@popeye

爬上@popeye已经明确定义的内容,这是我的2美分

&#39; jboss-deployment-structure.xml&#39;的位置:src/main/webapp/WEB-INF/jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <!-- Hey Server please don't add these dependencies. I don't need them. 
                                 I have mine in my application dependencies -->
        <exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.slf4j" />
            <module name="org.slf4j.ext" />
            <module name="org.slf4j.impl" />
            <module name="org.apache.log4j" />
        </exclusions>
        <dependencies>
            <module name="com.oracle" />
            <module name="org.jboss.ironjacamar.jdbcadapters" slot="main" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>

现在,logback.xml正在行动中。哟!

  • 为什么需要这样做 - <module name="com.oracle" />

这是您在JBOSS standalone.xml

中提到的驱动程序模块的名称
 <subsystem xmlns="urn:jboss:domain:datasources:1.1">
            <datasources>
                <datasource><!-- your configurations --></datasource>
                  <drivers>
                    <driver name="ojdbc6-11.2.0.4" module="com.oracle">
                        <xa-datasource-class>oracle.jdbc.OracleDriver</xa-datasource-class>
                    </driver>
                  </drivers>
            </datasources>
</subsystem>

请注意,这是针对JBOSS服务器进行数据库通信的。 [即使您的 project / lib 中有ojdbc6-11.2.0.4.jar,也需要此配置]

你是怎么想出这个名字&#39; com.oracle&#39;?这是标准吗? 。这是我在服务器上创建的文件夹的结构 在这里查看此SO帖子 - Xmlparserv2 error while application deployed in jboss, Installing Oracle ojdbc module in JBoss for Java web application &#39;如何在JBOSS中创建Oracle模块&#39;

另请注意,不要将此项与您可能在项目pom.xml中添加的相关性混淆。 即:这一个

<dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0.4</version>
                <scope>provided</scope> <!-- to exclude from WEB-INF/lib -->
            </dependency>

上面的项目依赖需要你编写Java代码,编译它, 并且在运行时期间,您的代码也可以与驱动程序进行通信。

  • 为什么需要这样做 - <module name="org.jboss.ironjacamar.jdbcadapters" slot="main" />

否则,您可能会遇到错误,以便在Spring应用程序中获取JBoss上的jndi数据源集。 这是一种依赖。别忘了在pom.xml

中添加jar
<dependency>
            <groupId>org.jboss.ironjacamar</groupId>
            <artifactId>ironjacamar-jdbc</artifactId>
</dependency>