İ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
- 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çinreadConfiguration()
'u çalıştırmak için bir görev yazın. - 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.
Tam olarak "kaybolmak" ile ne demek istiyorsun? – fge
@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
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