2011-03-13 33 views
5

ai có thể giải thích cho tôi, làm thế nào để thiết lập java Logger cho các lớp khác nhau từ một gói bê tông?Thiết lập java Logger cho một gói cụ thể

ví dụ: nếu tôi nhận được cái này và thiết lập nó

Logger logger = Logger.getLogger("com.google.api.client.*"); 
     logger.setLevel(Level.CONFIG); 
     logger.addHandler(new Handler() { 

      @Override 
      public void close() throws SecurityException { 
      } 

      @Override 
      public void flush() { 
      } 

      @Override 
      public void publish(LogRecord record) { 
       // default ConsoleHandler will take care of >= INFO 
       if (record.getLevel().intValue() < Level.INFO.intValue()) { 
        System.out.println(record.getMessage()); 
       } 
      } 
     }); 

có điều kiện như thế này

Logger.getLogger(HttpTransport.class.getName()).isLoggable(Level.CONFIG);

trong thư viện nơi HttpTransport là một phần của com.google.api.client.*

Nhưng vấn đề là,

Logger.getLogger(HttpTransport.class.getName()).isLoggable(Level.CONFIG); 

false ... như thế nào nếu một logger khác nhau được thu thập

Còn cách nào khác tôi nên thiết lập nó cho tất cả các lớp từ gói giống nhau không? nếu có điều kiện cho logger cho các lớp cụ thể như HttpTransport.

Trả lời

6

Bạn không muốn. * Trong chuỗi gói của bạn. Thay đổi

Logger logger = Logger.getLogger("com.google.api.client.*"); 

để

Logger logger = Logger.getLogger("com.google.api.client"); 
+0

OMG :-) Tôi đã dành 30 phút với một này ... Cảm ơn bạn – lisak

+0

Nó tốt hơn để sử dụng 'Client.class.getName()' hơn một chuỗi như tên lớp, vì vậy nếu bạn refactor nó sẽ không phá vỡ đăng nhập của bạn. – Webnet

Các vấn đề liên quan