为特定包设置java Logger

lis*_*sak 5 java logging java.util.logging

任何人都可以向我解释一下如何从具体包中为各种类设置java Logger?

例如:如果我得到这个并设置它

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());
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

有这样的条件

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

在图书馆,在那里HttpTransport是的一部分com.google.api.client.*

但问题是,那个

Logger.getLogger(HttpTransport.class.getName()).isLoggable(Level.CONFIG); 
Run Code Online (Sandbox Code Playgroud)

false...就像是获得了不同的记录器一样

我应该如何为同一个包中的所有类设置它?如果有像HttpTransport这样的具体类的记录器的条件.

Dha*_*win 6

您不希望包字符串中包含.*.更改

Logger logger = Logger.getLogger("com.google.api.client.*");
Run Code Online (Sandbox Code Playgroud)

Logger logger = Logger.getLogger("com.google.api.client");
Run Code Online (Sandbox Code Playgroud)

  • 使用`Client.class.getName()` 比使用字符串作为类名更好,所以如果你重构它不会破坏你的日志记录。 (2认同)