Log4j 在记录错误时无法发送电子邮件

2022-01-23 00:00:00 logging gmail java 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.

相关文章