`
Dxx23
  • 浏览: 140962 次
  • 性别: 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发送日志邮件------全面

    javaweb配置Log4j发送日志邮件, 简单例子解析------只起到一个抛砖引玉的作用.有什么意见请多多指出...不足之处望请见谅

    Log4j日志包

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

    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 Log4J简介 3 2 Log4J实现 3 2.1 Log4J配置 3 2.2 Log4J的类图 4 2.3 日志级别 4 2.4 配置Logger组件 4 2.5 配置Appender组件 5 ...3.5 发送日志给邮件 9 3.6 用于数据库 9 3.7 自定义Appender 10

    LOG4J配置全接触

    Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。

    log4j常用配置

    日志处理组件log4j的配置 通过log4j可以实现信息的分级别的输出,可以将日志信息输出到控制台、文件、HTML文件、数据库、还可以发送电子邮件,功能相当给力

    log4pb, pb的日志组件, 后台线程记录日志

    日志可以同时记录到数据库,文件(目录log4pb下),和邮件发送,可扩展其它方式(如发送QQ消息) // 7. 日志是异步记录的(每个记录方式开了个线程在后台负责记录处理),大大提高应用程序性能 // 8. 功能可以通过...

    Java日志软件Log4j的基本使用教程

    主要介绍了Java日志软件Log4j的基本使用教程,包括回滚和发送日志邮件等基本功能使用的讲解,需要的朋友可以参考下

    实现邮件发送的java程序

    2、程序中用到的jar包sendMail-1.0.jar(邮件发送)、ant-apache-log4j-1.8.3.jar(记录日志)。 3、邮件标题、发件地址密码、收件地址、邮件附件、邮件内容等都在配置文件中设置,程序灵活性高。

    JdkLoggerUtils.java

    * 封装了日志输出的的各种方法,本类模仿了log4j的输出格式,定义 * 了1、日志输出到控制台,2、日志输出到文件,3、日志发送邮件, * 4、日志存入数据库,5、 日志发送邮件并存入库,6、日志发送邮件和输出到...

    基于storm实现的日志监控系统源码.zip

    使用log4j生成日志信息,使用flume对日志进行监控并采集,将采集到的数据放到kafka中使用storm对数据进行清洗和标准化,FilterBolt对error,warning等单词进行过滤,NotifyBolt触发规则之后,会往用户的邮箱发送邮件...

    logevents:SLF4J易于扩展的实现,包括电池和合理的默认值

    Logevents-一个简单的SLF4J实现 无论是使用配置文件还是使用代码,设置和配置日志记录都应该很容易。 日志事件是在SLF4J之上构建的小型(265kb,无依赖项)日志记录框架-用于Java的日志记录语言。 特征: 使用...

    springboot学习

    chapter4-2-3:对log4j进行多环境不同日志级别的控制 chapter4-2-4:使用AOP统一处理Web请求日志 chapter4-2-5:使用log4j记录日志到MongoDB chapter4-2-6:Spring Boot 1.5.x新特性:动态修改日志级别] 安全管理 ...

    maven-shared-utils-0.4.zip

    au-log4j.zip,log4j appender,它可以通过电子邮件将日志(通常是错误)发送到

    s2mBlog 免费博客平台 v3.2.0

    项目全程采用LOG4J2作为日志框架,包括控制台输出、记录到文件、严重错误发送邮件提醒、将日志记录至数据库;图片、视频、附件上传保存在云存储,提升浏览速度、安全性能、稳定性;完善的管理员权限体系,将权限分配...

    iBase4J分布式系统-其他

    9、日志:log4j2打印日志,业务日志和调试日志分开打印。同时基于时间和文件大小分割日志文件。10、QQ、微信、新浪微博第三方登录。11、工具类:excel导入导出,汉字转拼音,身份证号码验证,数字转大写人民币,FTP/...

    IOIF基于开源技术的JAVA开发框架

    IOIF以EXTJS为前端,以Spring、Struts、Hibernate为后端,整合了Proxool、Log4j、Quartz、Oscache、Castor、Memcached、redis等优秀的开源软件。 支持Tomcat6及Resin3等应用服务器,支持Oracle、MYSQL等数据库。IOIF...

    IOIF面向项目的开源开发框架

    IOIF以EXTJS为前端,以Spring、Struts、Hibernate为后端,整合了Proxool、Log4j、Quartz、Oscache、Castor、Memcached、redis等优秀的开源软件。 支持Tomcat6及Resin3等应用服务器,支持Oracle、MYSQL等数据库。IOIF...

    spring boot 全面的样例代码

    - chapter4-2-2:[使用log4j记录日志](http://blog.didispace.com/springbootlog4j/) - chapter4-2-3:[对log4j进行多环境不同日志级别的控制](http://blog.didispace.com/springbootlog4jmuilt/) - chapter4-2-4:...

    logwitch:一个用 shell 和 lua 编写的简单的 linux 日志文件扫描器-开源

    它可以处理 log4j 和 gnu/linux 系统日志。 通过在其 config 目录中创建一个简单的文本文件,您可以将其配置为监视您感兴趣的日志文件中的行。 它通过电子邮件向您发送每日报告和时间戳日志,以便您不会收到重复的...

Global site tag (gtag.js) - Google Analytics