繁体   English   中英

Logback不能与JBoss EAP 6.1一起使用

[英]Logback not working with JBoss EAP 6.1

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

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

发现类似的问题 - Logback + SL4J + JBoss EAP 6.0Logback和Jboss 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

现在日志记录工作正常。

首先,感谢@popeye

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

' jboss-deployment-structure.xml '的位置: 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服务器到数据库的通信。 [即使你的项目/ lib中ojdbc6-11.2.0.4.jar ,你也需要这个配置]

是怎么想出这个名字'com.oracle'的? 这是标准吗? 这是我在服务器上创建的文件夹的结构看这个SO帖子 - 在jboss中部署应用程序时出现Xmlparserv2错误,在JBoss for Java Web应用程序中安装Oracle ojdbc模块 '如何在JBOSS中创建Oracle模块'

另请注意,不要将此项与您可能在项目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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM