最近在 JBoss WildFly 8 下部署 Web应用,自定义的 log4j 日志不工作。console下无日志输出,用System.out.println都不输出内容到console。
原因是JBoss WildFly 8 自带了日志功能,其中包含了log4j。
解决办法:
第一步:在standalone\configuration\standalone.xml 中找到如下配置信息
<profile>
<subsystem xmlns="urn:jboss:domain:logging:2.0">
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
在<subsystem xmlns="urn:jboss:domain:logging:2.0">下面添加 <use-deployment-logging-config value="false"/>
添加后为
<profile>
<subsystem xmlns="urn:jboss:domain:logging:2.0">
<use-deployment-logging-config value="false"/>
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
第二步:在Web应用下添加WEB-INF/classes/jboss-deployment-structure.xml 部署文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure
xmlns="urn:jboss:deployment-structure:1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<deployment>
<exclusions>
<module name="org.apache.log4j"></module>
</exclusions>
</deployment>
</jboss-deployment-structure>
重新启动JBoss WildFly 8,日志按WEB-INF/classes/log4j.properties 中自定义的格式输出了。