我在我的应用程序中启用了日志记录,并且我希望通过电子邮件(gmail帐户)发送日志错误。我:
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
没有发生任何事情,没有发送电子邮件,也没有显示错误,我不明白为什么,请关于那个主题的任何想法???
答案 0 :(得分:8)
默认情况下,Log4J提供的SMTP Appender不会设置必要的参数来支持GMail。它不会发出STARTTLS命令来启动SMTP会话。你可以通过以下方式纠正这个问题:
答案 1 :(得分: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
答案 2 :(得分:4)
我在连接到GMail SMTP服务器时遇到了同样的问题 我已经解决了。以下我用来发送电子邮件的代码 使用Log4j.properties文件设置。
我正在使用带有JDK1.6的Log4j.1.2.16版本
请在下面找到解决问题的步骤:
第一步初始化System.getProperties(key,value)
。要连接到GMail,您必须进行以下代码更改
static
{
System.setProperty("mail.smtp.auth", "true");
System.setProperty("mail.smtp.socketFactory.port", "465");
System.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
System.setProperty("mail.smtp.socketFactory.fallback", "false");
System.setProperty("mail.smtp.user","xxx@gmail.com");
System.setProperty("mail.smtp.starttls.enable","true");
System.setProperty("mail.transport.protocol", "smtp");
System.setProperty("mail.smtp.starttls.enable", "true");
System.setProperty("mail.smtp.host", "smtp.gmail.com");
System.setProperty("mail.smtp.port", "465");
System.setProperty("mail.smtp.quitwait", "false");
}
其次,请参阅log4j.properties文件设置:
log4j.rootLogger=DEBUG, FILE, email
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.maxFileSize=8192KB
log4j.appender.FILE.maxBackupIndex=5
log4j.appender.FILE.File=xxx.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%p] %t %c:%L - %m%n
log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.SMTPHost=smtp.gmail.com
log4j.appender.email.SMTPPort=465
log4j.appender.email.SMTPUsername=xyz@gmail.com
log4j.appender.email.SMTPPassword=xyz1234
log4j.appender.email.From=abcd@gmail.com
log4j.appender.email.to=blaha@gmail.com
log4j.appender.email.Subject=Error Alert
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
log4j.appender.email.BufferSize=10
log4j.appender.email.Threshold=ERROR
在代码级别以及log4j.properties设置中完成所有更改后,我开始收到电子邮件。
如果有人有更好的方法,请告诉我。
答案 3 :(得分:1)
并未完全回答您的原始问题,但Logback似乎支持GMail out of the box:
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>smtp.gmail.com</smtpHost>
<smtpPort>465</smtpPort>
<ssl>true</ssl>
<username>YOUR_USERNAME@gmail.com</username>
<password>YOUR_GMAIL_PASSWORD</password>
<to>EMAIL-DESTINATION</to>
<to>ANOTHER_EMAIL_DESTINATION</to> <!-- additional destinations are possible -->
<from>YOUR_USERNAME@gmail.com</from>
<subject>TESTING: %logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-5level %logger{35} - %message%n</pattern>
</layout>
</appender>
来自:Logback文档的Chapter 4: Appenders。
答案 4 :(得分:1)
您的代码存在一些问题:
而不是
System.getProperty("mail.smtp.user","xxx@gmail.com");
System.getProperty("mail.smtp.starttls.enable","true");
应该去
System.setProperty("mail.smtp.user","xxx@gmail.com");
System.setProperty("mail.smtp.starttls.enable","true");
答案 5 :(得分:0)
I am using the below log4j configuration . But There is nothing that happened no email sent and no error shown , and I do not understand why, Please any idea about that topic ???
I am using jdk 1.8 and log4j-1.2.17.jar , activation.jar, java-mail-1.4.jar,mail-api-1-3-1.jar,slf4j-api-1.7.1.jar...
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.SMTPProtocol=smtps
log4j.appender.MAIL.SMTPUsername=username@gmail.com
log4j.appender.MAIL.SMTPPassword=password
log4j.appender.MAIL.threshold=error
log4j.appender.MAIL.SMTPHost=smtp.gmail.com
log4j.appender.MAIL.SMTPPort=465
log4j.appender.MAIL.smtp.starttls.enable=true
log4j.appender.MAIL.Subject=Error Alert on server
log4j.appender.MAIL.to=username@gmail.com
log4j.appender.MAIL.From=no-reply@gmail.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n`enter code here`
log4j.appender.MAIL.BufferSize=5
log4j.appender.MAIL.LevelRangeFilter.LevelMin=error
log4j.appender.MAIL.LevelRangeFilter.LevelMax=fatal
log4j.appender.MAIL.smtp.auth=true