2011-06-05 10 views
5

He habilitado el inicio de sesión en mi aplicación, y deseo enviar un mensaje de error por correo electrónico (cuenta de gmail). I:Log4j no pudo enviar un correo electrónico al registrar un error

  1. establecer un proyecto java
  2. añadir activation.jar, log4j.java y mail.jar (correo java)
  3. añadí esas bibliotecas a la ruta de clase del proyecto
  4. añadí log4j .properties y he configurado de esta manera:
 
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 

Configuración del appender 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 
[email protected] 
[email protected] 
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 

No hay nada que ocurrió ningún correo electrónico enviado y ningún error que se muestra, y no entiendo por qué, por favor ninguna idea acerca de ese tema ???

+0

¿Por qué se downvoted esta pregunta? –

+1

@Swaranga, probablemente debido a un formato deficiente. Verifica el original. –

Respuesta

7

El Atributo SMTP provisto por Log4J no configura los parámetros necesarios para admitir GMail por defecto. No emite el comando STARTTLS para iniciar una sesión SMTP. Puede rectificar esto por:

  • Escriba su propio apéndice para admitir el envío de mensajes al servidor GMail SMTP.
  • O, usando el Log4j SMTP Appender for Gmail. Descargo de responsabilidad: no he usado este proyecto.
+0

Gracias funciona bien – bmscomp

1

No del todo respondiendo a la pregunta original, pero Logback parece apoyar 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>[email protected]</username> 
    <password>YOUR_GMAIL_PASSWORD</password> 

    <to>EMAIL-DESTINATION</to> 
    <to>ANOTHER_EMAIL_DESTINATION</to> <!-- additional destinations are possible --> 
    <from>[email protected]</from> 
    <subject>TESTING: %logger{20} - %m</subject> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <pattern>%date %-5level %logger{35} - %message%n</pattern> 
    </layout>  
    </appender> 

Desde: Chapter 4: Appenders de documentación Logback.

3

Me enfrenté al mismo problema con la conexión al servidor GMail SMTP y ahora Lo he resuelto. La siguiente pieza del Código I solía enviar un correo electrónico al con la configuración del archivo Log4j.properties.

estoy usando la versión Log4j.1.2.16 con jdk1.6

A continuación los pasos para resolver el problema:

Primer paso inicializar el System.getProperties(key,value). Para conectarse a Gmail, lo que tiene que hacer el código siguiente cambia

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","[email protected]"); 
    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"); 
} 

En segundo lugar aparece la opción de archivo 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 
    [email protected] 
    log4j.appender.email.SMTPPassword=xyz1234 
    [email protected] 
    [email protected] 
    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 

Después de hacer todos los cambios a nivel de código, así como en log4j. configuración de propiedades, comencé a recibir correos electrónicos.

Avísame si alguien tiene una mejor manera de hacerlo.

1

Su código tiene algunos problemas:

en lugar de

System.getProperty("mail.smtp.user","[email protected]"); 
System.getProperty("mail.smtp.starttls.enable","true"); 

Debe ir

System.setProperty("mail.smtp.user","[email protected]"); 
System.setProperty("mail.smtp.starttls.enable","true"); 
5

Aquí está un ejemplo: (porque he intentado muy duro durante unos días, ahora sus obras)

el truco es: log4j.appender.gmail.SMTPProtocol = SMTPS

> log4j.rootLogger= ERROR,gmail 
> log4j.appender.gmail=org.apache.log4j.net.SMTPAppender 
> log4j.appender.gmail.SMTPProtocol=smtps   
> [email protected] 
> 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 
> [email protected] 
> [email protected] 
> 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 
+0

Esta debería ser la respuesta correcta. Gracias –

+0

Esta línea también puede ser necesaria: 'log4j.appender.gmail.smtp.auth = true' – leventunver

+0

@leventunver No, SMTPProtocol = smtps es suficiente con SMTPPort = 465. –

Cuestiones relacionadas