将log4j错误发送给不同的组

时间:2011-10-03 09:04:54

标签: java logging properties log4j

我使用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 个答案:

答案 0 :(得分:1)

使用log4j中的SMTPAppender来配置这样的东西应该很容易。但请注意,电子邮件日志需要相当多的负载,特别是如果您考虑向开发人员发送DEBUG报告。

答案 1 :(得分:1)

您可以使用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>