在我的pom.xml中,我添加了以下依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
正如jboss论坛中所建议的那样,我在战争项目中的WEB-INF下面添加了jboss-deployment-structure.xml。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.log4j"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
但仍然是服务器日志打印,我的控制台中没有应用程序日志。
我在classpath中的log4j.properties低于设置。
log4j.rootLogger=DEBUG, consoleAppender, fileAppender
# Redirect log messages to console
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.fileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.MaxFileSize=5MB
log4j.appender.fileAppender.MaxBackupIndex=10
log4j.appender.fileAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.fileAppender.File=${jboss.server.base.dir}/log/wm/sample.log
控制台日志我得到的是
09:35:36,122 WARN [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015850: /C:/Mohan/Software/jboss-as-7.1.1.Final/standalone/deployments/wm.ear/wm-web-0.0.1-SNAPSHOT.war/WEB-INF/jboss-deployment-structure.xml in subdeployment ignored. jboss-deployment-structure.xml is only parsed for top level deployments.
有人可以帮助我指出我在上面的内容中缺少什么吗?
修改
我的应用程序的结构是 - 每个都有自己的pom.xml,父代将有共同的pom.xml。我在war pom.xml中添加了所有与slf4j相关的依赖项。
parent(pom.xml)
|
| __ear(pom.xml)
|
| __war(pom.xml)
|
| __test(pom.xml)
答案 0 :(得分:0)
如果您使用的是Spring,则可以从web.xml配置log4j
<!-- Logging listener -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>file:yourpath/log4j.properties</param-value>
<!-- You can also define yourpath with a environment variable and use it like file:${env_variable_path}/log4j.properties -->
</context-param>
此外,如果您仍然遇到问题,可以尝试使用jboos-deployment-structure.xml中的theese排除项
<exclusions>
<module name="org.apache.log4j" />
<module name="org.slf4j" />
<module name="org.apache.commons.logging" />
<module name="org.log4j" />
<module name="org.jboss.logging" />
</exclusions>
我认为你需要覆盖其他日志记录机制。
答案 1 :(得分:0)
首先,不会在战争的pom中设置<scope>provided</scope>
吗?
无论如何,从你得到的日志中我可以看到你将战争部署为耳档案的一部分。您需要在jboss-deployment-structure.xml中反映这一事实。 要了解如何引用JBoss AS7 docs或您使用的任何JBoss服务器的文档。
概述:您将jboss-deployment-structure.xml放入ear存档中。在xml中,您必须将war的配置定义为子部署:
<jboss-deployment-structure>
<deployment>
....
</deployment>
<sub-deployment name="wm-web-0.0.1-SNAPSHOT.war">
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</sub-deployment>
</jboss-deployment-structure>