log4j – Başka Framework ile Kullanılması

Eğer java’da başka framework ve tool’lardan yararlanıyorsanız ve aynı zamanda log4j’de kullanmak istiyorsanız nasıl ayarlamanız gerektiğini iyi bilmeniz gerekir. Aksi halde ordan oraya gitmelere, çakışmalara, birden çok log file oluşmasına ve hatta gereğinden uzun log dosyalarıyla boğuşmak durumunda kalabilirsiniz.

Ne yazıkki daha önceleride log4j’i başka framework’lerle kullanmaya çalışmama rağmen bir türlü istediğim şekilde kullanmayı başaramadım. Fakat bu günlerde rast geldiğim bir yazıda nasıl kullanabileceğimi bana bulduran ufak bir ayrıntıya rast geldim. Şimdi ise size log4j’yi nasıl kullanabileceğinizi açıklayacağım.

Tabi bu ayarları yaparak kullandığınızda, başka frameworkler ya da toolar log4j’yi kullanmıyorsa bile siz kullanabileceksiniz. Yalnız öncelikle kendi test ettiğim projeden ve kullandığım araçlardan bahsetmek istiyorum.

Kuallandığım projede Wicket Framework’unu, Hibernate ile birlikte ve Tomcat 7 server’ıyla çalıştırıyoruz.

Öncelikle Google yardıyımıyla ne şekilde bir logger kullanacağımı belirliyorum. Bunu log4j.properties isimli bir dosyaya kaydediyorum

log4j.properties


#### Iki Appenders kullanıyorum
log4j.rootCategory=INFO, stdout, R

#### Ilk appender console'a yazıyor
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Ne şekilde yazacağımı söylüyorum
log4j.appender.stdout.layout.ConversionPattern=%5p (%d) [%t] (%F%L) - %m%n

#### Ikinci Appender dosyaya yazacak
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log\WicketUploadFile.log

# Max Dosya byüklüğünü belirliyorum
log4j.appender.R.MaxFileSize=10000KB
# Log dosyalarımın arşivini berliliyorum
log4j.appender.R.MaxBackupIndex=10

# Ikinci appender'ımın ne şekilde yazacağını söylüyorum
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p (%d) %t %c - %m%n
# Ikinci appender'ımın Level'ini belirliyorum (Default INFO ayarlı)
log4j.appender.R.Threshold = WARN

Daha sonra bu dosyayı kullandığım server’ımın yani Tomcat 7’nin lib klasörünün altına kaydediyorum. Zaten ayarlarınızı doğru şekilde yaptıysanız log4j için gerekli dosyalar bu lib klasörünüzün altındadır. Eğer başka klasörleride lib klasörü gibi kullanıyorsanız ve eğer log4j ile ilgili jar dosyası onların altında ise bu dosyayı ilgili klasörün altına kaydedin. Yok eğer değilse dediğim gibi devam edin.

Burdan sonra projenizi çalıştırdığınızda hem console’unuzda hem dosyanızda istediğiniz log bilgilerini görebileceksiniz.

Bir java class’ınızdan logunuza yazmak isterseniz aşağıdakine benzer bir kod çalıştırmanız yeterli olacaktır.

public class UploadFile extends WebPage {
...
private static Logger logger = Logger.getLogger(UploadFile.class);
...
public UploadFile() {
...
logger.warn("Test");
logger.info("Test2");
...
}
...
}

Eğer herşeyi doğru şekilde yapıp benzer bir örnek kodu yazarsanız da aşağıdakine benzer bir çıktıyla karşılaşacaksınız.

Console’da

WARN (2011-06-13 23:19:28,621) [“http-bio-8080”-exec-3] (UploadFile.java19) – Test
INFO (2011-06-13 23:19:28,622) [“http-bio-8080”-exec-3] (UploadFile.java20) – Test2

Dosya’da

WARN (2011-06-13 23:19:28,621) “http-bio-8080”-exec-3 blg.bhdrkn.upload.UploadFile – Test

İki farklı appender’da farklı iki log görmenizin sebebi iki logunda Level düzeyinin farklı ayarlanmasıdır. Eğer level düzeyleri ile ilgili daha fazla bilgi almak istiyorsanız bu siteyi ziyaret edebilirsiniz.

Eğer dosyalarınızda ya da console’unuzda farklı bilgiler yer almasını istiyorsanız, log4j.properties  dosyanızda ilgili appender’ınızın ConversionPattern kısmını değiştirmeniz gerekiyor. ConversionPattern kısmında ne gibi bilgilerin yer alabileceğini ise bu siteden öğrenebilirsiniz.

Umarım sizin için yararlı olmuştur.

Kaynaklar:

End Of Line