2010-11-05 23 views
5

Hazır bir Java web uygulamasına özel bir uzantı yazıyorum. Uygulama, günlüğe kaydetme için log4j'yi kullanıyor ve özellikle uzantım için yeni bir günlükçüyü ve ekleyiciyi eklemek istiyorum. Sorun, uygulamanın bir yönetici ekranı UI'sindeki seçimlere dayalı olarak dinamik olarak oluşturulan log4j.properties dosyasını yönetmesidir. Bu bir "hazır" uygulama olduğundan, kaynak kodunu değiştiremiyorum. Yani, eğer kendi logger & ekleyicisini dosyaya eklerseniz, bir kullanıcı arayüzünde oturum açma tercihlerini değiştirdiğinde her zaman üzerine yazılır.Birden çok log4j.properties dosyası aynı Tomcat web uygulamasında kullanılabilir mi?

o log4j 2 dosyalarından bu yapılandırma var olsun almak mümkün mü? Bu senaryoda

applog.properties #(Dynamically generated from admin UI) 
mylog.properties #(My static properties) 

, log4j nasılsa tam yapılandırma için iki dosya girişleri birleştirmek olacaktır: Örneğin, aşağıdaki gibi bir şey isterdi.

Bu mümkün mü? ya da başka bir çözüm var mı?

cevap

2

Birden log4j.properties dosyası "birleştirme" için bir yol bulmak yapmadım ama çalışılabilir bir çözüm buldunuz. log4j yapılandırması, aşağıdaki kod snippet'ine benzer çalışma zamanında programatik olarak işlenebilir. Bu, özel log4j ayarlarımı log4j.properties dosyası tarafından tanımlanan yapılandırmaya etkin bir şekilde birleştirdi;

// Init custom logging 

// Define layout 
PatternLayout layout = new PatternLayout(); 
layout.setConversionPattern("%d [%-5p] -- %m%n"); 

// Create appender 
RollingFileAppender appender = new RollingFileAppender(); 
appender.setFile(LOG_PATH); 
appender.setMaxFileSize("2MB"); 
appender.setMaxBackupIndex(0); 
appender.setLayout(layout); 
appender.activateOptions(); // It didn't work without this 

// Get our logger and add appender. 
log = Logger.getLogger("[MyCustomLogger]"); 
log.setLevel(YOUR_LOGGING_LEVEL_HERE); 
log.addAppender(appender); 
İlgili konular