我正在尝试将多个相关应用程序的日志分组到单个日志文件中。
例如,我有3个应用程序A1.esb,A2.esb,A3.esb。
我希望这3个应用程序的所有日志都记录到一个名为A.log的日志文件中。
同样,我希望B.log用于B1.esb、B2.esb和B3.esb。
我在JBoss应用服务器中使用log4j。
我曾尝试使用TCLFilter,但我仅成功地将单个应用程序记录到单个日志文件中。在中,A1.esb日志记录到A1.log,A2.esb日志记录到A2.log,依此类推。但我想不出一种对这些日志进行分组的方法。
发布于 2010-03-11 06:07:49
非常感谢大家的回复。
我已经设法通过阅读jboss的一些log4j文档来修复它。
我所要做的就是为每个应用程序组指定一个附加器,并且在每个附加器中,我将有一个筛选器链。
因此,我的日志附加器应该如下所示。
<appender name="A" 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/A.log"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="A1.esb"/>
</filter>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="A2.esb"/>
</filter>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="A3.esb"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>对于B组依此类推,B组将具有B1.esb、B2.esb和B3.esb。
发布于 2010-03-09 23:56:55
定义将用于以下三个日志的附加器:
<appender name="A" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/A.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="INFO"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>然后使用additivity=false将您的包路由到此记录器
<category name="A1.esb" additivity="false">
<priority value="INFO"/>
<appender-ref ref="A"/>
</category>
<category name="A2.esb" additivity="false">
<priority value="INFO"/>
<appender-ref ref="A"/>
</category>
<category name="A3.esb" additivity="false">
<priority value="INFO"/>
<appender-ref ref="A"/>
</category>我希望您为每个应用程序使用不同的包。
https://stackoverflow.com/questions/2405770
复制相似问题