2013-07-18 13 views
6

İki proje: ürün (proje-A) ve A için otomatik değerlendirme projesi (proje-B).<ant> görevi kullanılarak çağrılan yapı dosyası, arayanın günlük yapılandırmalarını sıfırlar

B'nin inşa dosyasında, biz yapı çalıştırın ve paket-ile-app-sunucu böyle sürecine A'nın yapı dosyası çağırmanız gerekir: Proje B'de,

<ant antfile="${build-file-A}" inheritall="false" target="all" /> 

Ve biz çok içinde var Java.util.logging (JDK Günlüğü Çerçevesi) kullanarak iletileri çıkaran ant görevleri.

Sorun, bu satırdan sonra, tüm jdk logger çıktıları kaybolur. ayıklama ile

, ben bulmak, sadece tek bir sınıfın logger yapılandırmasını içeren bir yapılandırma dosyası yükleyen proje A'nın yapı dosyası, LogManager.readConfiguration(InputStream) çalışacak proje A'da bir staticly tanımlanan şey, bir initialzation sırasında.

readConfiguration sırasında, LogManager.reset(); reset sırasında , her bir günlükleyicinin işleyicisi kaldırılacaktır. <ant>, hedef oluşturma dosyasını arayanın aynı işlemine yükleyeceğinden, tüm işleyiciler kaldırılacaktır.

Bu nedenle, yapılandırılmış olanın dışında jdk logger kullanan diğer her sınıf, çıktı işleyicisinin olmaması nedeniyle iletileri çıkaramıyor.

Sorum şu:

dışındaki bu sorunu çözmek için herhangi bir yolu var mı: Proje A'nın yapı dosyası çalıştırmak için

  1. kullanım <exec>; <ant> numaralı çağrıdan sonra varsayılan yapılandırma dosyasından varsayılan JDK günlüğü ayarlarını geri yüklemek için readConfiguration()'u çalıştırmak için bir görev yazın.
  2. Karıncaların kendi günlüğe kaydetme çerçevesini (Task.log(), vb.) Kullanın.

Lütfen sorunu önlemek için A projesini değiştiremediğimi unutmayın.

+0

Tam olarak "kaybolmak" ile ne demek istiyorsun? – fge

+0

@fge jdk logger'ın çıkışı konsolda görünmüyor - görev başarıyla yürütülür, ancak çıktı alınmaz. Dediğim gibi, kök günlüğünün ConsoleHandler'ı "readConfiguration (InputStream)", kayıt mesajını biçimlendirip çıktığında kaldırılır. – coolcfan

+0

JDK günlüğünü veya tanımladığınız hedefleri kullandıkları Ant görevleri günlüğe kaydedilen Java programlarını çalıştırıyor mu? – Phani

cevap

1

LogManager alt sınıfını oluşturabilir ve reset geçersiz kılma ile ihtiyacınız olan işleyicileri yüklemek için iki readConfiguration yöntemini kullanabilirsiniz. Ardından, özel kodunuzu kayıt altına yüklemek için java.util.logging.config.class sistem özelliğini kullanın.

İlgili konular