JBoss AS 7.1.1 Final 和 Log4j + 不工作
JBoss AS 7.1.1 Final and Log4j + Not working
在我的 pom.xml 中,我添加了下面的依赖项
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
并且按照 jboss 论坛中的建议,我在 war 项目的 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>
但仍然打印服务器日志,我的控制台中没有应用程序日志。
我的 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,parent 有共同的 pom.xml。我在 war pom.xml.
中添加了所有 slf4j 相关的依赖项
parent (pom.xml)
|
|__ear (pom.xml)
|
|__war (pom.xml)
|
|__test (pom.xml)
如果您正在使用 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
中使用这些排除项
<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>
我认为您需要覆盖其他日志记录机制。
首先,在您的 war 的 pom 中设置 <scope>provided</scope>
不是很好吗?
无论如何,从您获得的日志中我可以看到您将 war 部署为 ear 存档的一部分。你需要在jboss-deployment-structure.xml中反映这个事实。
要了解如何参考 JBoss AS7 docs,或您使用的任何 JBoss 服务器的文档。
只需 overview:You 将您的 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>
在我的 pom.xml 中,我添加了下面的依赖项
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
并且按照 jboss 论坛中的建议,我在 war 项目的 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>
但仍然打印服务器日志,我的控制台中没有应用程序日志。
我的 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,parent 有共同的 pom.xml。我在 war pom.xml.
中添加了所有 slf4j 相关的依赖项parent (pom.xml)
|
|__ear (pom.xml)
|
|__war (pom.xml)
|
|__test (pom.xml)
如果您正在使用 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
中使用这些排除项 <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>
我认为您需要覆盖其他日志记录机制。
首先,在您的 war 的 pom 中设置 <scope>provided</scope>
不是很好吗?
无论如何,从您获得的日志中我可以看到您将 war 部署为 ear 存档的一部分。你需要在jboss-deployment-structure.xml中反映这个事实。 要了解如何参考 JBoss AS7 docs,或您使用的任何 JBoss 服务器的文档。
只需 overview:You 将您的 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>