我在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提供服务。有谁可以帮我解决一下如何解决这个问题。
答案 0 :(得分:0)
您是否尝试使用系统属性-Dlog4j.configurationFile=path/to/log4j2.xml
指定log4j2.xml配置文件位置?
我怀疑你现在正在初始化log4j的方式是从其他WAR看不到的。
如果失败,请在log4j2 Jira问题跟踪器上提出此问题。 https://issues.apache.org/jira/browse/LOG4J2