Log4j:每个war一个日志文件

xoshrz7s  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(249)

是否可以为每个war文件设置单独的日志文件?我们有两个应用程序“war”,每个都属于一个特定的功能,并由不同的团队管理。我们希望在自己的日志文件中输出单独的war日志。请注意,这两个war使用一些公共代码,因此我们可以在包级别进行划分。欢迎您提供任何输入。
谢谢你

yacmzcpb

yacmzcpb1#

如果您在JBoss中部署应用程序,则可以为jboss-log4j.xml中声明的<appender>设置一个<filter>

<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>
rnmwe5a2

rnmwe5a22#

对于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文件都有自己的日志文件。

mzmfm0qo

mzmfm0qo3#

这是一个适用于JBoss的log4j solution,它应该适用于其他容器,只要这些容器使用不同的类加载器。

相关问题