2011-11-15 19 views
6

Uygulamamda Log4j kullanıyorum ve hata ayıklama ve hata için bazı ekleri var. Bunu tomcat üzerinde test ettim ve iyi çalışıyordum. Tüm günlükleri kendi dosyalarında üretme. Ancak, WAS6.1'de kod dağıtırken, tüm günlükler yalnızca SystemOut.log içinde oluşturulur.Websphere tüm günlükleri SystemOut.log'a gidiyor

Lütfen yardım edin!

+0

Bazı kodları eklerseniz iyi olur. Websphere kullanıyorum ve tüm günlükleri ayrı bir günlük dosyasına alıyorum. –

+0

Ortak giriş gibi herhangi bir kayıt cephesi kullanıyor musunuz? Öyleyse, sınıf yükleme sırasını ebeveyn-son olarak değiştirmelisiniz. – szhem

+0

Ebeveyn-son yapmak zorunda değilsiniz, ve başka etkileri olduğu için, mümkünse bunu önlerim. – dbreaux

cevap

8

Sorun, WebSphere 6.1'in dahili olarak Jakarta Commons Logging (JCL) kullanması olabilir ve kodunuzdan veya 3. taraf kitaplıklarınızdan herhangi biri de JCL kullanıyorsa, WebSphere'in yapılandırma, log4j'yi kullanmaya çalışırken uygulamanızla çakışıyor. Bu oluyorsa, tam olarak ne gördüğünüzü göreceksiniz.

Birden fazla references ve bu adresi ele alma yollarını açıklayan blog posts vardır. Web uygulamanızın META-INF/services dizininde (WAR arşivinin kökünde) org.apache.commons.logging.LogFactory adlı bir dosya oluşturmanın en kolay yolunu bulduk.

org.apache.commons.logging.impl.Log4jFactory 

(En az WebSphere ... daha yeni sürümleri ile) başka önemli JCL kavanoz log4j kavanoz aynı konuma yüklenebilir gerektiğidir: Bu dosya hattını içermelidir. Örneğin. ikisi de WEB-INF/lib'den veya her ikisi de paylaşılan bir kitaplıktan. Böylece, WebSphere'in kendi sağladığı kopyadan JCL'yi yüklemeye geri dönemezsiniz. different classloaders tarafından yüklendiyse, birbirlerini düzgün şekilde göremezler.