Отправить log4j ошибки в разные группы - PullRequest
2 голосов
/ 03 октября 2011

Я использую log4j для сообщений об ошибках.Я установил свой журнал 4j, чтобы также добавлять ошибки в электронные письма.Однако мне нужно, чтобы отправлять электронные письма отдельным группам в зависимости от уровня сообщения.Например,

      info messages go to management- john@management.com, peter@management.com, simon@management.com                   
       debug messages go to programmers - paul@programmer.com, matt@programmer.com
       warn messages go to administrator - admin@admin.com

Так ли это возможно?И кто-нибудь реализовал эту процедуру (пример файла свойств будет приветствоваться)

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Вы можете использовать фильтр log4j, чтобы сделать это (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/Filter.html)

Пример ниже записывает сообщения в разные файлы в соответствии с уровнем журнала. Это может быть легко адаптировано для SMTPAppender вместо FileAppender.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="management" class="org.apache.log4j.FileAppender">
        <param name="File" value="management.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="INFO" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <appender name="programmers" class="org.apache.log4j.FileAppender">
        <param name="File" value="programmers.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="DEBUG" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <appender name="admin" class="org.apache.log4j.FileAppender">
        <param name="File" value="admin.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="WARN" />
            <param name="LevelMax" value="WARN" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <category name="a">
        <level value="ALL" />
        <appender-ref ref="management"/> 
        <appender-ref ref="programmers"/>
        <appender-ref ref="admin"/> 
    </category>

</log4j:configuration>
1 голос
/ 03 октября 2011

Должно быть легко настроить что-то подобное, используя SMTPAppender из log4j. Но имейте в виду, что журналы электронной почты требуют довольно большой нагрузки, особенно если вы рассматриваете рассылку DEBUG отчетов разработчикам.

...