2011-12-12 32 views
6

Her günlük türünü ayrı bir dosyada kaydetmek isteyen çeşitli günlük kaydı (kullanıcı, uygulama, vb ...) içeren uygulama günlüğüm için bir çözüm oluşturuyorum.Log4j ile birden çok günlük dosyası

Bu log4j veya başka bir API ile mümkündür? Bunu nasıl yapabilirim?

İlginç bulursanız, soruyu düzenlerim ve kodları koyarım, ama buna değer olduğunu düşünmüyorum, hala çok temel.

Şimdiden teşekkürler.

+0

Eğer günlük türleri ile ne anlama geliyor? Günlük Seviyeleri (DEBUG, INFO, WARN ...) VEYA log kodunun gerçekleştiği farklı sınıflar VEYA kod aracılığıyla çalıştırılan kullanıcıya bağlı olarak farklı günlük dosyaları mı istiyorsunuz? Veya iş parçacığı tarafından farklı olmasını istiyor musunuz? isim? –

+1

olası [çoğul-log-files-of-farklı-içerik ile-log4j oluşturma] çiftinin kopyası (http://stackoverflow.com/questions/728295/creating-multiple-log-files-of-different-content- with-log4j) –

+0

@olly_uk Bence bu bir kopya değil. – caarlos0

cevap

22

, internetten farklı FileAppenders Örnek kullanın: log Eğer Logger.getLogger("com.vaannila.admin").log("To admin log") admin.log için giriş yapabilir

Şimdi
log4j.rootLogger=DEBUG 

# AdminFileAppender - used to log messages in the admin.log file. 
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender 

log4j.appender.AdminFileAppender.File=admin.log 

log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.AdminFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

# ReportFileAppender - used to log messages in the report.log file. 
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender 

log4j.appender.ReportFileAppender.File=report.log 

log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.ReportFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

log4j.logger.com.vaannila.admin=WARN,AdminFileAppender 
log4j.logger.com.vaannila.report=DEBUG,ReportFileAppender 

ve rapor etmek Logger.getLogger("com.vaannila.report").log("To report log")

+0

"Logger.getLogger (" com.vaannila.admin ") bölümünü anlamıyorum. Log (" Yönetici günlüğüne ")", log4j bu örnekte AdminFileAppender'ı günlüğe kaydetmek istediğimi nasıl anlayacak? Burada benzer bir şey yapmaya çalışıyorum, ancak işe yaramıyor ... – caarlos0

+1

log4j.logger.'com.vaannila.admin' = WARN, AdminFileAppender, bu özellik "com.vaannila.admin" veya com.vaannila.admin.xxx.yyy.zzz 'daha sonra AdminFileAppender (FileAppender dosyası olan' admin.log ') – korifey

+0

hmm kullanıyor, şimdi çalışıyor. Çok teşekkürler, @korifey, Tanrı sizi korusun. – caarlos0

2

Log4j, Kaydediciler ve Ekleyiciler için sağlar. Bunu yapmanın yolu, istediğiniz her dosya için bir Ekleyiciye sahip olmaktır. Uygun Appender (lar) a işaret eden uygun bir Logger seti oluşturdular. Kaydediciler genellikle paket isimleri kullanılarak kurulur. Bu sizin için çalışacaksa, x paketindeki kod dosyaya gider, sadece bunu yapın. Aksi takdirde, çıktı dosyası başına Kaydediciler oluşturun ve kodun uygun kaydediciyi seçmesini sağlayın. Ayrıca, Kaydedicilere sahip olabilir ve bilgileri birden çok Ekleyiciye gönderebilirsiniz, böylece bunları uygun şekilde ayarlayabilirsiniz.

Bunun nasıl kurulacağına dair bir örnek için korifey gönderisine bakın. Cource

İlgili konular