【问题标题】:Email log4j errors to different groups通过电子邮件将 log4j 错误发送给不同的组
【发布时间】:2011-10-03 09:04:54
【问题描述】:

我正在使用 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

以这样的方式,有可能吗?有没有人实施过上述程序(一个示例属性文件将不胜感激)

【问题讨论】:

    标签: java logging properties log4j


    【解决方案1】:

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

    【讨论】:

    • 你有那个效果的属性文件
    • 查看@OdedPeer 的答案
    • odedpeer 使用 xml 格式,在使用属性文件时不一定会转换为类似的结果
    • 只允许使用 DOMConfigurator 使用过滤器。使用属性文件有什么特别的原因吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2022-01-11
      • 1970-01-01
      • 2017-01-21
      • 2013-08-22
      相关资源
      最近更新 更多