我正在尝试将多个相关应用程序的日志分组到一个日志文件中。
例如,我有3个应用程序A1.esb,A2.esb,A3.esb。
我希望这3个应用程序中的所有日志都记录到名为A.log的单个日志文件中。
同样,我想要B.logb,B2.esb和B3.esb的B.log。
我在JBoss应用服务器中使用log4j。
我曾尝试使用TCLFilter,但我只是成功地将各个应用程序记录到单个日志文件中。如在,A1.esb记录到A1.log,A2.esb记录到A2.log,依此类推。但我无法想出一种对这些记录进行分组的方法。
答案 0 :(得分:2)
非常感谢你的回复。
我已经设法通过阅读有关jboss的log4j的一些文档来修复它。
我所要做的就是为每个应用程序组指定一个appender,在每个appender中,我会有一个过滤器链。
所以我的日志追加器应如下所示。
<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组来说是等等,它有B1.esb,B2.esb和B3.esb。
答案 1 :(得分:0)
定义一个用于这三个日志的追加器:
<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>
我希望您为每个应用程序使用不同的包。