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