我有一个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? 但没有用......
答案 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
<dependency>
<groupId>org.jboss.ironjacamar</groupId>
<artifactId>ironjacamar-jdbc</artifactId>
</dependency>