Log4j не удалось отправить электронное письмо при регистрации ошибки - PullRequest
7 голосов
/ 05 июня 2011

Я включил вход в приложение и хочу отправить сообщение об ошибке по электронной почте (учетная запись gmail). Я:

  1. Настройка Java-проекта
  2. добавить активация.jar, log4j.java и mail.jar (java mail)
  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

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

Ничего не произошло, не было отправлено электронное письмо и не отображена ошибка, и я не понимаю, почему, пожалуйста, есть идеи по этой теме ???

Ответы [ 6 ]

8 голосов
/ 05 июня 2011

Приложение SMTP, предоставляемое Log4J, не устанавливает необходимые параметры для поддержки GMail по умолчанию. Он не запускает команду STARTTLS для запуска сеанса SMTP. Вы можете исправить это:

  • Либо написать свой собственный аппендир для поддержки отправки сообщений на SMTP-сервер GMail.
  • Или с помощью Log4j SMTP Appender для Gmail . Отказ от ответственности: я не использовал этот проект.
6 голосов
/ 30 июня 2014

Вот пример: (потому что я очень старался несколько дней, теперь это работает)

хитрость в следующем: 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
4 голосов
/ 01 сентября 2011

Я столкнулся с той же проблемой при подключении к SMTP-серверу GMail, и теперь Я решил это. Следующий фрагмент кода, который я использовал для отправки электронной почты с настройкой файла Log4j.properties.

Я использую версию Log4j.1.2.16 с JDK1.6

Пожалуйста, найдите ниже шаги для решения проблемы:

Первый шаг инициализации 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 я начал получать электронные письма.

Дайте мне знать, если у кого-то есть лучший способ сделать это.

1 голос
/ 22 июня 2012

Ваш код имеет некоторые проблемы:

вместо

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");
1 голос
/ 05 июня 2011

Не полностью отвечает на ваш первоначальный вопрос, но Logback , кажется, поддерживает GMail из коробки :

<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>

От: Глава 4:Appenders документации Logback.

0 голосов
/ 12 марта 2018
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...