`
Dxx23
  • 浏览: 142708 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Log4j发送日志邮件功能

阅读更多
Log4j发送日志邮件的作用:
      项目错误信息能及时(实时)反映给项目维护人员以及相关负责人。

优点:
      1.快速响应;
      2.共同监督;
      3.邮件正文直接显示了错误信息,拷贝信息比登陆服务器再查找要方便;
      4.在日志信息继续写入文件的前提下,多了另外一种获取信息的渠道。

补充:Log4j可以实现输出到控制台,文件,回滚文件,发送日志邮件,数据库,自定义标签。
发送邮件的一个重要的类是SMTPAppender,之前用的是 log4j-1.2.8,在1.2.8的版本中,SMTPAppender没有SMTPPassword 和SMTPUsername 属性。这两个属性分别是登录SMTP服务器发送认证的用户名和密码。

依赖的jar包:
log4j-1.2.15.jar(版本低于log4j-1.2.14.jar不支持SMTP认证)
mail.jar
activation.jar


在log4j.properties文件中配置:
### send error through email.
#log4j的邮件发送appender,如果有必要你可以写自己的appender
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#发送邮件的门槛,仅当等于或高于ERROR(比如FATAL)时,邮件才被发送
log4j.appender.MAIL.Threshold=ERROR
#缓存文件大小,日志达到10k时发送Email
log4j.appender.MAIL.BufferSize=10
#发送邮件的邮箱帐号
log4j.appender.MAIL.From=xxx@163.com
#SMTP邮件发送服务器地址
log4j.appender.MAIL.SMTPHost=smtp.163.com
#SMTP发送认证的帐号名
log4j.appender.MAIL.SMTPUsername=xxx@163.com
#SMTP发送认证帐号的密码
log4j.appender.MAIL.SMTPPassword=xxx
#是否打印调试信息,如果选true,则会输出和SMTP之间的握手等详细信息
log4j.appender.MAIL.SMTPDebug=false
#邮件主题
log4j.appender.MAIL.Subject=Log4JErrorMessage
#发送到什么邮箱,如果要发送给多个邮箱,则用逗号分隔;
#如果需要发副本给某人,则加入下列行
#log4j.appender.MAIL.Bcc=xxx@xxx.xxx
log4j.appender.MAIL.To=xxx@xxx.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework]%d - %c -%-4r[%t]%-5p %c %x -%m%n


Log4j的SMTP的级别默认是ERROR级别
默认是ERROR级别,那就是说,只有程序出错了,才可以收到邮件。不过可以自定义的级别,继承TriggeringEventEvaluator类,覆盖里面的一个方法:
@Override   
public  boolean isTriggeringEvent(LoggingEvent arg0) {    
        return arg0.getLevel().isGreaterOrEqual(Level.INFO);    
    }


SMTPAppender 实现是,每当isTriggeringEvent()这个方法返回true的时候,它都会发送邮件。这样的话,一个程序执行下来,每个有能力触发的事件都会形成一封邮件。
事件的个数达到bufferSize的一半的时候就会发一封邮件:
继承了SMTPAppender类,重写了append方法
@Override   
    public void append(LoggingEvent event) {      
        if (!checkEntryConditions()) {    
            return;    
        }       
        event.getThreadName();    
        event.getNDC();    
        event.getMDCCopy();    
        if (this.getLocationInfo()) {    
            event.getLocationInformation();    
        }    
        cb.add(event);    
        if (evaluator.isTriggeringEvent(event)) {    
            if (cb.length() > this.getBufferSize() / 2) {    
                sendBuffer();    
            }      
        }    
    }  


另外一个问题也随之产生了,当程序结束时,还在缓冲里面的事件是不会被发送出来的。因为事件数往往没有bufferSize的一半。
public   *****SMTPAppender() {    
        Runtime.getRuntime().addShutdownHook(new Thread() {      
            @Override   
            public void run() {    
                if (cb.length() > 0) {    
                    sendBuffer();    
                }      
            }      
        });    
    }  



log4j有网页格式的输出:
log4j.appender.MAIL.layout=org.apache.log4j.HTMLLayout  

解决邮件中的中文乱码问题,继承HTMLLayout,覆盖getContentType方法
@Override   
    public String getContentType() {    
        return "text/html;charset=GBK";     
    }


此文为网络摘自,有任何问题大家都可以批评指正。
分享到:
评论
1 楼 静夜一曲 2014-10-17  
能否设置立即发送邮件呢?

相关推荐

    javaweb配置Log4j发送日志邮件------全面

    配置Log4j发送日志邮件主要涉及以下几个步骤: 1. **配置log4j.properties文件**:这是Log4j的配置文件,我们需要在这里定义Appender。添加以下内容: ```properties # 定义一个SMTP Appender log4j.appender.SMTP...

    log4j 发送邮件

    2. **Log4j配置**:要使用Log4j发送邮件,首先需要在项目的配置文件(通常是`log4j.properties`或`log4j.xml`)中添加适当的配置,包括设置SMTP服务器信息、发件人和收件人地址,以及触发发送邮件的日志级别。...

    log4j 不同级别 不同文件 发送邮件配置

    在这个特定的配置场景中,我们将探讨如何设置log4j,使其能将不同级别的日志信息分别记录到不同的文件中,并且具备发送邮件通知的能力。 首先,我们需要创建一个log4j的配置文件,通常命名为`log4j.properties`。这...

    log4j记录Debug日志

    Log4j是Apache组织开发的一款广泛使用的Java日志框架,主要功能是用于记录应用程序运行过程中的各种日志信息。在Java编程中,日志记录是非常重要的一环,它可以帮助开发者追踪程序运行状态,定位错误,优化性能,...

    log4j(二):动态配置日志输出路径

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的功能和灵活的配置,使得我们可以根据需要动态地改变日志的输出路径。本文将深入探讨如何在Log4j中实现日志输出路径的动态配置。 首先,我们要理解Log4j...

    log4j发送邮件log4j1.2.16.jar、mail.jar、activation.jar

    本文将深入探讨Log4j发送邮件的功能,以及涉及到的log4j-1.2.16.jar、mail.jar和activation.jar这三个关键文件。 Log4j是一个开源的日志框架,最初由Apache软件基金会开发。它为Java应用程序提供了灵活的日志记录...

    log4j日志jar包.rar

    总之,Log4j作为一个强大而灵活的日志框架,为Java开发者提供了丰富的功能,便于他们在开发和维护过程中进行问题诊断和系统监控。正确配置和使用Log4j能显著提高开发效率,同时也有助于提升系统的可维护性。这个资源...

    Log4j记录日志DEMO

    **Log4j记录日志DEMO** 在Java开发中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态、定位错误和调试代码。Log4j是Apache组织提供的一款广泛使用的开源日志框架,适用于各种Java应用程序。Log4j以其...

    log4j 发送邮件配置实例

    在本实例中,我们将探讨如何使用Log4j配置来实现当系统出现error时自动发送电子邮件的功能。 首先,我们需要了解Log4j的基本配置结构。一个典型的Log4j配置文件(通常是`log4j.properties`或`log4j.xml`)包含了...

    Log4j日志包

    log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=...

    log4j配置发送邮件案例

    在IT行业中,日志记录是系统监控和故障排查的关键环节,而Log4j作为Java领域广泛应用的日志框架,提供了一种高效...这个"log4j配置发送邮件案例"展示了如何将日志管理和故障响应相结合,提升了系统的可维护性和可靠性。

    log4j实用配置扩展

    #### 四、log4j的核心组件 log4j的核心组件主要包括**Loggers(记录器)**、**Appenders(输出源)**和**Layouts(布局)**。 1. **Loggers (记录器)**:负责生成日志信息,并决定是否发送日志信息到Appenders。记录器...

    log4j日志驱动包

    # 发送日志给邮件 log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.Threshold=FATAL log4j.appender.MAIL.BufferSize=10 log4j.appender.MAIL.From=test@sina.com.cn log4j.appender....

    log4j写日志

    1. **自定义Appender**: 可以扩展Log4j,实现自己的Appender,例如发送日志到邮件、网络服务器等。 2. **过滤器**: 通过Filter接口,可以实现更细粒度的日志控制,比如只输出特定类或包含特定关键字的日志。 3. **...

    log4j的详细配置,log4j.xml和log4j.properties,日志输出到文件,邮件,数据库,控制台等

    总之,Log4j通过其灵活的配置,可以满足不同场景下的日志需求,无论是简单地输出到控制台,还是复杂地发送邮件或存入数据库,都能轻松实现。对于开发和运维人员来说,理解和掌握Log4j的配置方法是十分重要的,它能极...

    .net log4jdemo log4j日志

    Log4j是Java领域广泛使用的日志框架,但通过一些工具和适配器,我们也可以在.NET环境中利用其强大的功能。本文将详细介绍如何在.NET项目中使用Log4jDemo,以实现高效、灵活的日志管理。 首先,Log4j是一个开源的...

    Log4j日志文档和Log4j包

    3. **Appenders**:Appender是Log4j的一个核心组件,它负责将日志信息发送到特定的目标,如控制台、文件、电子邮件、数据库等。常见的Appender有ConsoleAppender(控制台)、FileAppender(文件)、SMTPAppender...

    Log4j日志管理

    Log4j是Apache组织开发的一款Java日志框架,它在Java世界中被广泛使用,尤其在企业级应用中,因为其强大的功能、灵活性和高效性。Log4j提供了丰富的日志记录选项,允许开发者根据需求调整日志级别,输出调试信息,...

    Log4j输出日志到syslog

    标题中的“Log4j输出日志到syslog”是指使用Log4j日志框架将应用程序的日志信息发送到syslog服务器的过程。Log4j是Java编程语言中广泛使用的日志记录工具,它允许开发者灵活控制日志信息的输出级别、格式和目标。而...

    log4j 数据库,邮件,html 等配置

    这样,一旦日志达到ERROR级别,Log4j就会自动发送包含日志信息的邮件。 三、HTML格式的日志输出 HTML格式的日志对于查看和分析日志非常友好,可以直观地呈现层次结构和颜色编码。我们可以使用HTMLLayout类创建HTML...

Global site tag (gtag.js) - Google Analytics