我在一个wildfly实例中有多个Web应用程序(多个战争)。 每个Web应用程序在启动servlet时都会读取存储在 WILDFLY_HOME / standalone / configuration 目录中的名为 webapp1.log4j.properties 的log4j.properties文件:
<servlet>
<servlet-name>LoadPropertiesServlet</servlet-name>
<display-name>LoadPropertiesServlet</display-name>
<servlet-class>it.h2h.smart.identity.servlet.LoadPropertiesServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
这是LoadPropertiesServlet类:
public void init() throws ServletException {
log.debug("init()");
loadConfiguration();
}
private void loadConfiguration() {
...
log.debug("Loading log4j file " + wildfly_config_path + "/" + webapp_name + ".log4j.properties");
PropertyConfigurator.configure(wildfly_config_path + "/" + webapp_name + ".log4j.properties");
...
}
这是我的webapp1.log4j.properties:
log4j.logger.it=DEBUG,WEBAPP
log4j.appender.WEBAPP=org.apache.log4j.DailyRollingFileAppender
log4j.appender.WEBAPP.DatePattern='.'yyyy-MM-dd
log4j.appender.WEBAPP.File=/Users/gianca/WEBAPP.log
log4j.appender.WEBAPP.layout=org.apache.log4j.PatternLayout
log4j.appender.WEBAPP.datePattern=yyyy-MM-dd
log4j.appender.WEBAPP.layout.ConversionPattern=%d %-5p %c:%L %x - %m%n
log4j.appender.WEBAPP.MaxBackupIndex = 10
因此,当只将一个War部署到wildfly中时没有问题,但是当我使用相同结构部署多个具有不同名称的War时,所有部署的War文件的所有记录器都会在最后定义的文件名上写入。 / p>
所以,使用上面的代码,如果我部署了另一个名为Webapp2.war的webapp,它加载webapp2.log4j.properties,希望通过webapp1在其他路径上写入:
log4j.logger.it=DEBUG,WEBAPP
log4j.appender.WEBAPP=org.apache.log4j.DailyRollingFileAppender
log4j.appender.WEBAPP.DatePattern='.'yyyy-MM-dd
log4j.appender.WEBAPP.File=/Users/otherpath/WEBAPP.log
log4j.appender.WEBAPP.layout=org.apache.log4j.PatternLayout
log4j.appender.WEBAPP.datePattern=yyyy-MM-dd
log4j.appender.WEBAPP.layout.ConversionPattern=%d %-5p %c:%L %x - %m%n
log4j.appender.WEBAPP.MaxBackupIndex = 10
之前的webapp1.war,最后一次将日志一起写入 /Users/otherpath/WEBAPP.log 。
我在每个war文件中使用log4j-1.2.17.jar库。
我尝试更改每个log4j.properties的log4j appender名称,如WEBAPP1和WEBAPP2,但没有结果。
有办法解决吗? 感谢
答案 0 :(得分:0)
使用WildFly standalone.xml解决:
...
<logging-profiles>
<logging-profile name="Webapp1">
<file-handler name="Webapp1File">
<level name="DEBUG"/>
<file relative-to="jboss.server.log.dir" path="webapp1.log"/>
</file-handler>
<root-logger>
<level name="DEBUG"/>
<handlers>
<handler name="Webapp1File"/>
</handlers>
</root-logger>
</logging-profile>
</logging-profiles>
在每次战争中插入清单文件:
Logging-Profile: Webapp1