Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

0
Log4j şarta göre logları mail atmak.

Açık 2 Cevaplar 133 Gösterim Java
Log4j kullanarak logları biriktirmek belirli bir şart oluştuğu zaman da biriken logları mail olarak göndermek istiyorum. Bunun için nasıl bir yöntem izlemem gerekiyor?

İyi çalışmalar.

2 Cevap

0
Selam,

Konfigurasyon ile nasıl yapılır bilmiyorum ama SMTPAppender class ınden exten edilmiş bir class ın içine log methoduna (warn,error,fatal etc..) ilgili methoda yani condition ı yazarak çalışacak bir override yaptığında conditional olarak log basıp gönderecektir.

İyi Çalışmalar.
(110 puan)
0

Örnek olarak aşağıdaki kodu yazıp denedim. Gayet güzel görünüyor. 

  • Kullanılan appender nesnesini alıyoruz.
  • smtp appender olarak cast ediyoruz. 
  • setEvaluator metodu ile callback vererek hangi durumda mail atılacağını belirleyebiliyoruz.
  • Önemli nokta bir event tetiklendiği zaman bu callback fonksiyona giriyor. Bu işlem için manuel bi log basma mantıklı olabilir.
public class App {
    static private Logger userLog = Logger.getLogger("userlog");
    static private Logger prgLog = Logger.getLogger("programlog");
    private static boolean toBeSent = false;

    public static void main(String[] args) {
        SMTPAppender apen = (SMTPAppender) prgLog.getAppender("programlog");
        apen.setEvaluator(new TriggeringEventEvaluator() {
            
            public boolean isTriggeringEvent(LoggingEvent event) {
                return toBeSent;
            }
        });
        System.out.println("Started");
        int i = 0 ;
        while (true) {
            toBeSent = false;
            i++;
            userLog.info(i + "-from userlog");
            prgLog.error(i + "-from programlog");
            System.out.println("End");
            if(i % 15 == 0 )
                toBeSent = true;
            try {
                Thread.sleep(100);
            } catch (Exception e) {

            }
            prgLog.log(prgLog.getEffectiveLevel(), "mail to sent");
        }
    }
}

 

(5.7k puan)
düzenledi