2010-08-23 22 views
2

J'ai une application de traitement par lots JBOSS qui envoie parfois des centaines sur des e-mails dans une minute à la même adresse e-mail avec des erreurs Log4J. Cela provoque des problèmes avec Gmail, car il indique que nous envoyons des e-mails trop rapidement pour ce compte Gmail.Log4J SMTP condenser/agréger des e-mails?

Je me demandais s'il y avait un moyen de créer essentiellement un e-mail « digérer » ou « global » met tous les journaux d'erreur dans 1 e-mail et envoie que toutes les 5 minutes. Ainsi, toutes les 5 minutes, nous recevons un gros courriel, mais nous recevons au moins l'email au lieu de le retarder pendant des heures et des heures par les serveurs gmail qui le rejettent.

J'ai lu this post qui suggérait quelque chose à propos de l'utilisation d'un évaluateur pour faire cela, mais je ne pouvais pas voir comment cela est configuré dans le fichier de configuration de Log4J xml. Il semblait aussi qu'il ne serait peut-être pas capable de "digérer" tous les logs dans un email de toute façon.

Quelqu'un at-il déjà fait cela? Ou savoir si c'est possible?

Répondre

3

De http://www.manning-sandbox.com/thread.jspa?threadID=9913

ensemble cette propriété

log4j.appender.myMail.evaluatorClass = com.mydomain.example.MyEvaluator 

Maintenant, vous devez créer la classe d'évaluateur et mettre en œuvre l'interface org.apache.log4j.spi.TriggeringEventEvaluator et placez cette classe dans un chemin où log4j peut y accéder.

//Example TriggeringEventEvaluator impl 

package com.mydomain.example; 

import org.apache.log4j.spi.LoggingEvent; 
import org.apache.log4j.spi.TriggeringEventEvaluator; 

public class MyEvaluator implements TriggeringEventEvaluator { 

    public boolean isTriggeringEvent(LoggingEvent event) { 
     return true; 
    } 

} 

Vous devez écrire la logique de l'évaluateur dans cette méthode.

+0

Merci pour cela, ressemble à cela ferait le travail. À la fin, j'ai éteint tous les emails parce que ça devenait incontrôlable. Cependant, si je suis obligé de le rallumer, cela aidera définitivement! –

+0

J'ai continué à me demander pourquoi mon appender ne fonctionne pas. Le log4j xsd pourrait être meilleur s'il peut fournir un retour sur une configuration mal formée. Combiner le seuil ou le niveau de l'enregistreur avec SMTPAppender, sans lancer d'exception est vraiment déroutant. Bien que la seule façon de modifier le niveau de journalisation pour SMTPAppender soit réellement implémentée et fournisse TriggeringEventEvaluator. – lwpro2