Log4j 在记录错误时无法发送电子邮件 [英] Log4j failing to send an email when logging an error

查看:27
本文介绍了Log4j 在记录错误时无法发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序中启用了日志记录,并且我想通过电子邮件(gmail 帐户)发送日志错误.我:

  1. 设置一个 java 项目
  2. 添加activation.jar、log4j.java和mail.jar(java邮件)
  3. 我将这些库添加到项目类路径中
  4. 我添加了 log4j.properties 并像这样配置它:

<上一页>log4j.rootLogger=主记录器、电子邮件、目的地log4j.appender.mainlogger=org.apache.log4j.ConsoleAppenderlog4j.appender.mainlogger.target=System.outlog4j.appender.mainlogger.layout=org.apache.log4j.PatternLayoutlog4j.appender.mainlogger.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %p %-4r [%t] %-5p %c %x - %m%nlog4j.appender.dest=org.apache.log4j.FileAppenderlog4j.appender.dest.File=log.loglog4j.appender.dest.layout=org.apache.log4j.PatternLayoutlog4j.appender.dest.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %p %-4r [%t] %-5p %c %x - %m%n

配置 SMTP 附加程序

log4j.appender.Email=org.apache.log4j.net.SMTPAppenderlog4j.appender.Email.BufferSize=512log4j.appender.Email.Threshold=错误log4j.appender.Email.SMTPHost=smtp.gmail.comlog4j.appender.Email.SMTPUsername=我的用户名log4j.appender.Email.SMTPPassword=我的密码log4j.appender.Email.From=myemail@gmail.comlog4j.appender.Email.To=myotheremail@gmail.comlog4j.appender.Email.Subject=错误报告log4j.appender.Email.layout=org.apache.log4j.PatternLayoutlog4j.appender.Email.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

没有发生任何事情,没有发送电子邮件,也没有显示错误,我不明白为什么,请对这个主题有任何想法???

解决方案

Log4J提供的SMTP Appender默认没有设置支持GMail的必要参数.它不会发出 STARTTLS 命令来启动 SMTP 会话.您可以通过以下方式纠正此问题:

  • 编写您自己的附加程序以支持将消息发送到 GMail SMTP 服务器.
  • 或者,使用 Log4j SMTP Appender for Gmail.免责声明:我没有使用过这个项目.

I enabled logging in my application, and I want to send logs error by email (gmail account). I:

  1. Set up a java project
  2. add activation.jar , log4j.java and mail.jar (java mail)
  3. I added those libraries to the project class path
  4. I added log4j.properties and I configured it like this :

log4j.rootLogger= mainlogger, Email, dest
log4j.appender.mainlogger=org.apache.log4j.ConsoleAppender
log4j.appender.mainlogger.target=System.out
log4j.appender.mainlogger.layout=org.apache.log4j.PatternLayout
log4j.appender.mainlogger.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %p %-4r [%t] %-5p %c %x - %m%n
log4j.appender.dest=org.apache.log4j.FileAppender
log4j.appender.dest.File=log.log
log4j.appender.dest.layout=org.apache.log4j.PatternLayout
log4j.appender.dest.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %p %-4r [%t] %-5p %c %x - %m%n

Configuring the SMTP appender

log4j.appender.Email=org.apache.log4j.net.SMTPAppender
log4j.appender.Email.BufferSize=512
log4j.appender.Email.Threshold=ERROR
log4j.appender.Email.SMTPHost=smtp.gmail.com
log4j.appender.Email.SMTPUsername=myusername
log4j.appender.Email.SMTPPassword=mypassword
log4j.appender.Email.From=myemail@gmail.com 
log4j.appender.Email.To=myotheremail@gmail.com
log4j.appender.Email.Subject=Error Report
log4j.appender.Email.layout=org.apache.log4j.PatternLayout
log4j.appender.Email.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

There is nothing that happened no email sent and no error shown , and I do not understand why, Please any idea about that topic ???

解决方案

The SMTP Appender provided by Log4J does not setup the necessary parameters to support GMail by default. It does not issue the STARTTLS command to initiate a SMTP session. You could rectify this by:

  • Either writing your own appender to support sending of messages to the GMail SMTP server.
  • Or, by using the Log4j SMTP Appender for Gmail. Disclaimer: I haven't used this project.

这篇关于Log4j 在记录错误时无法发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆