Uygulamama log4j ekledikten sonra uygulamamı her çalıştırdığımda aşağıdaki çıktıyı alıyorum:
log4j:WARN Kaydedici (slideselector.facedata.FaceDataParser) için hiçbir eklenti bulunamadı. log4j:WARN Lütfen log4j sistemini düzgün bir şekilde başlatın.
Görünüşe göre bu, bir yapılandırma dosyasının eksik olduğu anlamına geliyor. Bu yapılandırma dosyası nerede bulunmalı ve iyi bir başlangıç içeriği nedir?
Bir masaüstü uygulaması geliştirmek için düz java kullanıyorum. Yani web sunucusu vs. yok...
Log4j varsayılan olarak sınıf yolunda log4j.properties veya log4j.xml adlı bir dosya arar. Sistem özelliklerini burada açıklandığı gibi ayarlayarak kendisini başlatmak için hangi dosyayı kullanacağını kontrol edebilirsiniz ("Default Initialization Procedure" bölümüne bakın).
Örneğin:
java -Dlog4j.configuration=customName ....
log4j'nin sınıf yolunda customName adında bir dosya aramasına neden olur.
Eğer sorun yaşıyorsanız log4j.debug özelliğini açmayı faydalı buluyorum:
-Dlog4j.debug
Kendini başlatmak için hangi dosyayı kullandığı, hangi kaydedicilerin / ekleyicilerin nasıl yapılandırıldığı vb. hakkında System.out'a birçok yararlı bilgi yazdıracaktır.
Yapılandırma dosyası bir java özellikleri dosyası veya bir xml dosyası olabilir. Burada log4j giriş dokümantasyon sayfası'den alınan özellikler dosyası formatının bir örneği bulunmaktadır:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
Kök ekleyicisi olan bir log4j.properties veya log4j.xml dosyasını bulun ve sınıf yolunuza yerleştirin.
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout
konsola günlüğe kaydedecektir. Daha sonra araştırabilmeniz için bir dosyaya günlük tutmayı tercih ederim.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=100KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=test.log
log4j.appender.file.threshold=debug
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug,file
Her ne kadar ayrıntılı günlük uygulamaları için 100KB genellikle 1MB veya 10MB'a çıkarılmalıdır, özellikle de hata ayıklama için.
Şahsen ben birden fazla kaydedici kuruyorum ve kök kaydediciyi hata ayıklama yerine uyarı veya hata seviyesine ayarlıyorum.
Hangi alanda geliştirme yapıyorsunuz? Apache Tomcat kullanıyor musunuz?
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} [[%5p] %c{1} [%t]] %m%n
Bir Java uygulamamda buna benzer bir özellik var.