2011-04-07 12 views
6

Java uygulamasına bir SMTPAppender yapılandırdım.Yalnızca ERROR aldım ve INFO türü günlük öğelerini değil

<appender name="AdministratorEmail" class="org.apache.log4j.net.SMTPAppender"> 
    <param name="Threshold" value="info" /> 
    <param name="BufferSize" value="512" /> 
    <param name="SMTPHost" value="smtp.sss.intranet" /> 
    <param name="From" value="[email protected]" /> 
    <param name="To" value="[email protected]" /> 
    <param name="Subject" value="errors" />  
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" /> 
    </layout> 
    <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
    <param name="LevelMin" value="info" /> 
    <param name="LevelMax" value="fatal" /> 
    </filter> 
</appender> 

Ben sadece HATA günlüğü türü değil INFO türü alması! LevelMin değiştirdim ama hiçbir şey, ben Thresold ekledim, ama hiçbir şey!

Birisi herhangi bir öneri var mı?

+0

... o tetikleme :-) bir sorun değildi tüm hata tamponu İLK hatası gönderir. Dolayısıyla, varsayılan olarak, bir hata oluşana kadar postanızda hiç ileti görmezsiniz. – robob

cevap

15

SMTPAppender'ın tasarım gereği yalnızca ERROR ve yukarıdaki iletileri günlüğe kaydeder. Bu seviye özelliklerden etkilenemez. Eklenen durumlar için belgeler:

Varsayılan olarak, bir ERROR veya daha yüksek önemlilik mesajı eklendiğinde bir e-posta iletisi gönderilir. Class SMTPAppender

: tetikleme kriterleri belirtilen sınıf

Bkz TriggeringEventEvaluator uygulayan bir triggeringPolicy elemanı, TriggeringEventEvaluator uygulayan bir sınıfın adıyla evaluatorClass özelliğini ayarlayarak TriggeringEventEvaluator bir örneğiyle değerlendirici özelliğini ayarlamak veya iç içe tarafından değiştirilebilir

INFO iletilerini yalnızca ilk HATA'dan sonra görmeniz, hatanın bağlamını hataya bağlamadan önce 'n' en son günlük satırlarını gösteren bufferSize özelliğinden kaynaklanır.

bu konuda

fazla araştırma Bu indirilebilir

'ekstra arkadaşı' in TriggerEventEvaluator için gerekli arayüzün bir uygulama olduğunu gösteriyor: Eğer can projenizde bu eklerseniz Apache Download Mirrors

daha sonra log4j.xml içinde SMTPAppender tanımına aşağıdaki (özellikler biçimi desteklenmiyor unutmayın!) ekleyin sorun buldum

<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender"> 
... 
    <triggeringPolicy class="org.apache.log4j.rolling.FilterBasedTriggeringPolicy"> 
     <filter class="org.apache.log4j.filter.LevelRangeFilter"> 
     <param name="levelMin" value="INFO" /> 
     </filter> 
    </triggeringPolicy> 
... 
    </appender> 
+0

Bu çok yardımcı oldu. Aynı yapılandırma, [Log4j 1.2.16 veya üstü kullanılıyorsa] Gmail için de çalışır (http://geekswithblogs.net/scarpenter/archive/2010/11/26/gmail-logging-with-log4j-1.2.16.aspx). Gmail için özelleştirilmiş bir eklentiye gerek yok. – Ziska

+0

Log4j uyarılarını önlemek için doğru sırayla ' 'etiketini eklemeyi unutmayın:" Öğe türü "öğesinin içeriği" errorHandler?, Param *, rollingPolicy?, TriggeringPolicy?, ConnectionSource?, Layout? "Ile eşleşmelidir. filtre *, appender-ref *)". ' –

İlgili konular