是否可以根据war文件设置单个日志文件?我们有两个应用程序“战争”,每个战争都与特定功能相关,并由不同的团队管理。我们希望在自己的日志文件中输出单个war的日志。请注意,这两种战争都使用了一些通用代码,因此我们可以在包级别进行扩展。任何意见都表示赞赏。
谢谢
答案 0 :(得分:3)
如果您在JBoss中部署应用程序,则可以为<filter>
中声明的<appender>
设置jboss-log4j.xml
。 example from the JBoss Wiki:
<appender name="App1Log" class="org.apache.log4j.FileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"></errorHandler>
<param name="Append" value="false"/>
<param name="File" value="${jboss.server.home.dir}/log/app1.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %c{1} %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<!-- value="app1.war" is incorrect. -->
<param name="DeployURL" value="app1-exp.war"/>
</filter>
答案 1 :(得分:1)
使用log4j2(log4j版本2.x),有一个名为web:contextPath的有用查找,可用于指定日志文件名,例如:
<RollingFile name="RollingFile" fileName="${sys:catalina.base}/logs/${web:contextPath}.log"
filePattern="${sys:catalina.base}/logs/$${date:yyyy-MM}/${web:contextPath}-%d{MM-dd-yyyy}-%i.log.gz">
...
</RollingFile>
因此每个war文件都有自己的日志文件。
答案 2 :(得分:0)
这是适用于JBoss的log4j solution。如果战争使用不同的类加载器,它应该适用于其他容器。
HTH