2010-11-23 36 views
13

Java uygulamanız, log4j günlük kaydını kullanan üçüncü taraf bir jar dosyasına başvuruyor. Sorun şu ki bu jar, makinemde erişim reddedilen istisnalara neden olan kendi log4j.properties dosyasını içeriyor, ancak içeriklerini değiştirmek için jar dosyası üzerinde kontrol sahibi değilim.Geçersiz kılma log4j.properties

Kendi log4j.properties dosyasını uygulamamın sınıf yoluna eklemeye çalıştım ancak bir etkisi yok gibi görünüyor. Kendi ayarlarımı programsal olarak almak için PropertyConfigurator'ı kullanmaya çalışırsam, log4j önce jar dosyasının özellikler dosyasını yükler (istisnai duruma neden olur).

Üçüncü taraf jar dosyasının log4j.properties dosyasını yok saymak ve kendim kullanmak için log4j'yi nasıl kısa devre yapabilirim?

cevap

15

log4j.properties geçersiz kılmak için çeşitli yolu vardır, bunlardan biri:

  • Kullanım log4j.xml uzantısı
bakın

Diğer bir yaklaşım ise:

  • log4j.defaultInitOverride sistem özelliğini başka bir değereolarak ayarlamakardından "false", log4j'nin varsayılan başlatma prosedürünü atlamasına neden olur (bu prosedür).
  • Kaynak dize değişkeni log4j.configuration sistem özelliğinin değerine ayarlayın. Varsayılan başlatma dosyasını belirtmenin tercih edilen yolu, log4j.configuration sistem özelliğidir. Sistem özelliği log4j.configuration tanımlanmamışsa, dize değişken kaynağını "log4j.properties" varsayılan değerine ayarlayın.
  • Kaynak değişkenini bir URL'ye dönüştürmeyi deneyin.
  • Kaynak değişkeni, örneğin bir MalformedURLException nedeniyle bir URL'ye dönüştürülemiyorsa, org.apache.log4j.helpers.Loader.getResource (resource, Logger.class) öğesini çağırarak sınıf yolundaki kaynağı arayın. bir URL döndürür. "Log4j.properties" dizesinin hatalı biçimlendirilmiş bir URL oluşturduğunu unutmayın. Aranan konumların listesi için bkz. Loader.getResource (java.lang.String).
  • Hiçbir URL bulunamazsa, varsayılan başlatmayı iptal edin. Aksi halde, log4j'yi URL'den yapılandırabilirsiniz. PropertyConfigurator, URL, ".xml" uzantısıyla bitmediği sürece, log4j'yi yapılandırmak için URL'yi ayrıştırmak üzere kullanılır; bu durumda DOMConfigurator kullanılır. İsteğe bağlı olarak bir özel yapılandırıcı belirtebilirsiniz. Log4j.configuratorClass sistem özelliğinin değeri, özel yapılandırıcınızın tam olarak nitelenmiş sınıf adı olarak alınır. Belirttiğiniz özel yapılandırıcı, Yapılandırıcı arabirimini uygulamalıdır.

Ref: http://logging.apache.org/log4j/1.2/manual.html

+0

URL Log4j yaşam sürümüne sonuna işaret eder. En yakın eşdeğer: https://logging.apache.org/log4j/2.x/manual/configuration.html#SystemProperties –