我有一个未包装的
EAR
部署于
$JBOSS_HOME/standalone/deployments
在里面
Wildfly-8.2.0.Final AS
。它包含未包装的
WAR
和应用程序jar文件。
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
lib
的文件夹
耳朵
包含与log4j2相关的API,用于提供日志功能。
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配置
log4j2.xml
在中的启动单例bean中使用
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();
}
log4j2.xml内容
<?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>
所有的子包和类都在包下定义
com.test.prototype.log4j
.
类中添加的日志语句
HelloWorldEJB-0.0.1-SNAPSHOT.jar
记录在日志文件中。
我的问题是来自其他应用程序jar和WAR的1.log语句没有被记录到日志文件中。
2.虽然添加了log4j2所需的系统参数,但通过commons日志API无法进行日志记录。
System.setProperty("org.apache.commons.logging.Log",
"org.apache.commons.logging.impl.Log4JLogger");
我已尝试添加
class-path
在应用程序jars中,在
web.xml
属于
战争
文件,但什么都没用。
org.apache.logging.log4j.web.Log4jServletContextListener
我需要
日志4j2.xml
在下面
耳朵
它应该为EAR中添加的所有应用程序jar和WAR服务。有人能帮我解决这个问题吗。