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

bms*_*omp 7 java logging gmail log4j

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

  1. 设置一个java项目
  2. 添加activation.jar,log4j.java和mail.jar(java邮件)
  3. 我将这些库添加到项目类路径中
  4. 我添加了log4j.properties,我这样配置:
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

配置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
Run Code Online (Sandbox Code Playgroud)

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

Vin*_*lds 8

Log4J提供的SMTP Appender默认情况下不会设置必要的参数来支持GMail.它不会发出STARTTLS命令来启动SMTP会话.你可以解决这个问题:

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


Lan*_*ang 6

这是一个例子:(因为我努力了几天,现在它的作品)

诀窍是:log4j.appender.gmail.SMTPProtocol = smtps

> log4j.rootLogger= ERROR,gmail
> log4j.appender.gmail=org.apache.log4j.net.SMTPAppender
> log4j.appender.gmail.SMTPProtocol=smtps         
> log4j.appender.gmail.SMTPUsername=dummy@gmail.com
> log4j.appender.gmail.SMTPPassword=Your gmail password
> log4j.appender.gmail.threshold=error
> log4j.appender.gmail.SMTPHost=smtp.gmail.com
> log4j.appender.gmail.SMTPPort=465
> log4j.appender.gmail.smtp.starttls.enable=true
> log4j.appender.gmail.Subject=Logging Message via Gmail
> log4j.appender.gmail.To=dummy@example.com
> log4j.appender.gmail.From=dummy@gmail.com
> log4j.appender.gmail.layout=org.apache.log4j.PatternLayout
> log4j.appender.gmail.layout.ConversionPattern=%d{MM/dd/yyyy HH:mm:ss}[%M] %-5p %C - %m%n 
>log4j.appender.gmail.BufferSize=5
Run Code Online (Sandbox Code Playgroud)