2012-10-04 15 views
13

Şu anda Java projemdeki her yöntemin giriş ve çıkış noktalarını günlüğe kaydetmek için java.util.logging kullanıyorum. Bu hata ayıklama sırasında benim için çok yararlıdır.Java'da yöntemlerin giriş/çıkışları nasıl otomatik olarak kaydedilir?

"methodName" yöntemi ismi
if (logger.isLoggable(Level.FINER)) { 
    logger.entering(this.getClass().getName(), "methodName"); 
} 

(kodlanmış):

Her yöntemin başında kod parçası ve sonunda benzer bir tane.

Yani bu kodu her yönteme eklemeden otomatik olarak yapmanın bir yolu olup olmadığını merak ediyordum.

cevap

10

Aspect Yönelimli Programlamanın kullanılmasını öneririm. (Emacs ve diğerleri IDE Eclipse entegre edilebilir) AspectJ derleyici örnek için

, bu gibi bir kod parçası oluşturabilir:

aspect AspectExample { 
    before() : execution(* Point.*(..)) 
    { 
     logger.entering(thisJoinPointStaticPart.getSignature().getName(), thisJoinPointStaticPart.getSignature().getDeclaringType() ); 

    } 

    after() : execution(* Point.*(..)) 
    { 
     logger.exiting(thisJoinPointStaticPart.getSignature().getName() , thisJoinPointStaticPart.getSignature().getDeclaringType() ); 

    } 
} 

bu yönü sonra bir günlük kodu ekler ve "Nokta" sınıfındaki tüm yöntemlerin uygulanmasından önce. Daha önce önerilen

+0

Çevrimdışı uygulamalarda çalışıyor mu? Bir sunucuda çalışmıyor? –

+0

@ArturasM evet, AspectJ bayt kodu hedef sınıflara dokunur, bu da doğrudan JVM'de yürütülür. Yani, Java belirtimine uygun herhangi bir JVM onu çalıştırabilir. – Keith

12

Aspect oriented programming'a bakmalısınız. Bakmanız gereken bir şey olarak Spring AOP veya AspectJ'u öneririm.

Ayrıca

, Burada mısın Aspect Oriented Programming de içeri hak istiyoruz yöntemlerin giriş ve çıkış oturum açmak için yararlı olacağını özellikle around() joinpoint görünmelidir Eğer Logging with Spring AOP

+0

Ama İlkbahar, sunucuda çalışan değil çevrimdışı uygulamalarında çalıştığını sanmıyorum onlar yapın:

Ayrıca detaylarını açıklayan bu blog yazısı kontrol? Peki ya AspectJ? –

1

başlamanıza yardımcı olacak bir hızlı öğretici var tanımı.

İlgili konular