Log4j Группировка журналов приложений - PullRequest
1 голос
/ 09 марта 2010

Я пытаюсь сгруппировать журналы нескольких связанных приложений в один файл журнала.

Например, у меня есть 3 приложения A1.esb, A2.esb, A3.esb.

Я хочу, чтобы все журналы из этих 3 приложений были записаны в один файл журнала с именем A.log.

Аналогично, я хочу B.log для B1.esb, B2.esb и B3.esb.

Я использую log4j на сервере приложений JBoss.

Я пытался использовать TCLFilter, но мне удалось получить только отдельные приложения, ведущие журнал в отдельные файлы журнала. Например, запись A1.esb в A1.log, запись A2.esb в A2.log и так далее. Но я не мог найти способ сгруппировать эти записи.

Ответы [ 2 ]

2 голосов
/ 11 марта 2010

Большое спасибо, ребята, за ваш ответ.

Мне удалось это исправить, прочитав некоторую документацию по log4j для jboss.

Все, что мне нужно было сделать, это указать аппендера для каждой группы приложений, и внутри каждого аппендера у меня будет цепочка фильтров.

Таким образом, мой логин должен выглядеть следующим образом.

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

0 голосов
/ 09 марта 2010

Определите приложение, которое вы будете использовать для этих трех журналов:

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

Затем перенаправьте ваши пакеты в этот логгер с добавлением = 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>

Я надеюсь, что вы используете разные пакеты для каждого приложения.

...