2014-04-16 13 views
6

Java Logger'u kullanmaya başladım. Sınıf adı ve yöntemi için entering() ve exiting() yöntemlerini sabit kodlanmış dizeyle kullanmaya çalıştım. İkisi de benim için çalışmadı. Sadece onlar için kayıt girişi yok. Ancak, bu yöntemlerdeki diğer günlük ifadeleri düzgün şekilde kaydedildi. Kaydedici seviyem CONFIG olarak ayarlanmıştır. ALL'a ayarlamayı denedim, ancak yine de bunlardan giriş kaydını göremiyorum.Java Logger giren() ve çıkarken() yöntemleri

Her giriş için, sınıf adı ve günlüğe kaydedilen yönteme sahip bir satır var. Görünüşe göre bu iki yöntem gerekli değildir. Ama hala onların benim için nasıl çalışacağını bilmek istiyorum.

DÜZENLEME:

Kodum izledi: Bu seviyede kaydedilir (girme) ve çıkan() günlük dosyası

//class variables 
private final static Logger logger = Logger.getLogger(MyClass.class.getName()); 
private static FileHandler logFileHandler = null; 

//within the main() method 
Logger thisLogger = Logger.getLogger(""); 
logFileHandler = new FileHandler(logFileNameStr, false); 
logFileHandler.setFormatter(new SimpleFormatter()); 
thisLogger.addHandler(logFileHandler); 
thisLogger.setLevel(Level.CONFIG); 
logger.log(Level.INFO, "Logfile Directory = " + logFileNameStr); 


//within a constructor of MyClass 
logger.entering("MyClass", "MyClass()"); 
.... 
logger.info(initMsg); 
.... 
logger.exiting(this.getClass().getSimpleName(), "MyClass()"); 

cevap

5

Girme bir giriş oluşturmak değil, çıkarken ve atma İNCE. Kaydedicinizi FINER veya daha düşük bir değere ayarlamanız ve FileHandler'ınızı FINER veya daha düşük bir değere ayarlamanız gerekecektir.

thisLogger.addHandler(logFileHandler); 
thisLogger.setLevel(Level.FINER); 
logFileHandler.setLevel(Level.ALL); 
sen logger gerekir kullanabilir ve tüm izleme için başvuru edeceğiz çünkü

Bildiğim kadarıyla tarzı gider, sınıf adının için statik nihai oluşturarak denemelisiniz:

private static final String CLASS_NAME = MyClass.class.getName(); 

yöntem adları için () adını dahil etmeyin, sadece argümanların sayısıyla eşleşen giriş/çıkış yöntemini kullanın.

Yapıcı yöntem adları için "<init>" kullanın ve statik init blokları "<clinit>" yöntemini, bir stacktrace'de görünecek olan yöntem adı olarak kullanın.