我刚刚从 Tomcat 切换到 JBoss,我的第一个大问题是我无法在部署在 JBoss 上的 Web 应用程序中准备自己的 log4j.xml 文件。它不会在应用程序启动期间加载。我有日志记录,但它来自默认的 JBoss 日志记录配置
我发现在最新的 JBoss 7.2.0 中,log4j 应该可以开箱即用。但它不适合我。我尝试了我在谷歌上搜索过的所有技巧/提示/黑客 - 非常沮丧。
我想在我的项目中的某个地方有 log4j.xml。理想情况下,我不想修改 jboss 服务器目录中的配置,因为它必须工作 - 不仅在我的本地,而且在其他环境中(例如 openshift)。
pom.xml:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>provided</scope>
</dependency>
结构:
WEB-INF/classes/log4j.xml - 包含垃圾数据以检查 JBoss 是否读取它(一旦加载此文件应该抛出异常)。我也尝试将此文件复制到 /resources、/、WEB-INF。
WEB-INF/jboss-deployment-structure.xml
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="org.slf4j"/>
<module name="org.apache.log4j" />
</dependencies>
</deployment>
</jboss-deployment-structure>
我需要有外部加载器来加载我的 log4j 文件吗?
更新 #1 WEB-INF/classes/log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' debug="true">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
在我的代码中的某处:
private static final Logger log = LoggerFactory.getLogger(TaskResource.class);
...
log.debug("deubg");