Log4j2不记录EAR中WAR和非EJB jar的语句

时间:2015-12-23 12:19:50

标签: log4j2 ear apache-commons-logging

我在EAR的{​​{1}}部署了解压缩的$JBOSS_HOME/standalone/deployments。它包含解压缩的Wildfly-8.2.0.Final AS和应用程序jar文件。

WAR
HelloWorldEar-0.0.1-SNAPSHOT.ear -HelloWorldServlet-0.0.1-SNAPSHOT.war -lib -META-INF -aspectjrt-1.8.6.jar -HelloWorldAnnotation-0.0.1-SNAPSHOT.jar -HelloWorldAspect-0.0.1-SNAPSHOT.jar -HelloWorldCommonLib-0.0.1-SNAPSHOT.jar -HelloWorldEJB-0.0.1-SNAPSHOT.jar -log4j2.xml 的{​​{1}}文件夹包含与log4j2相关的API,用于提供日志记录功能。

lib

我正在初始化log4j2配置,方法是在EAR中使用启动单例bean初始化lib -commons-logging-1.2.jar -HelloWorldLog4jPlugin-0.0.1-SNAPSHOT.jar (Jar containing custom log4j2 plugins) -log4j-api-2.4.1.jar -log4j-core-2.4.1.jar -log4j-jcl-2.4.1.jar -log4j-web-2.4.1.jar

log4j2.xml

log4j2.xml内容

HelloWorldEJB-0.0.1-SNAPSHOT.jar

所有子包和类都在包String path = System.getProperty("jboss.home.dir") + "/standalone/deployments/HelloWorldEar-0.0.1-SNAPSHOT.ear/log4j2.xml"; ConfigurationSource source; File configFile = new File(path); try { source = new ConfigurationSource(new FileInputStream(configFile), configFile); Configurator.initialize(null, source); } catch (FileNotFoundException e) { e.printStackTrace(); } 下定义。

<?xml version="1.0" encoding="UTF-8"?> <Configuration status="trace"> <Appenders> <RollingFile name="SERVER_FILE" fileName="${sys:LOGS}/sample.log" filePattern="${sys:LOGS}/sample.log.%i" append="true"> <PatternLayout> <pattern>%d %-5p [%c{1}] [EventId: %e] [%t] %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="500 KB" /> </Policies> <DefaultRolloverStrategy max="5"/> </RollingFile> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout> <pattern>%d{ABSOLUTE} %-5p [%c{1}] %m%n</pattern> </PatternLayout> </Console> </Appenders> <Loggers> <Logger name="com.test.prototype.log4j" level="debug"> <AppenderRef ref="SERVER_FILE"/> </Logger> <Root level="debug" additivity="false"> <AppenderRef ref="CONSOLE"/> </Root> </Loggers> </Configuration> 类中添加的日志语句将记录在日志文件中。

我的问题是1.来自其他应用程序jar和WAR的日志语句没有登录到日志文件中。 2.虽然添加了log4j2所需的系统参数,但日志记录不通过公共日志API。

com.test.prototype.log4j

我尝试在HelloWorldEJB-0.0.1-SNAPSHOT.jar System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Log4JLogger"); 文件中的应用程序jar和下方监听器中添加class-path,但没有任何效果。              org.apache.logging.log4j.web.Log4jServletContextListener     

我需要在web.xml下设置WAR,它应该为EAR中添加的所有应用程序jar和WAR提供服务。有谁可以帮我解决一下如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

您是否尝试使用系统属性-Dlog4j.configurationFile=path/to/log4j2.xml指定log4j2.xml配置文件位置? 我怀疑你现在正在初始化log4j的方式是从其他WAR看不到的。

如果失败,请在log4j2 Jira问题跟踪器上提出此问题。 https://issues.apache.org/jira/browse/LOG4J2