【问题标题】:Setting up java Logger for a specific package为特定包设置 java Logger
【发布时间】:2011-03-13 18:28:39
【问题描述】:

谁能给我解释一下,如何从一个具体的包中为各种类设置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());
                }
            }
        });

有这样的条件

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

HttpTransportcom.google.api.client.* 一部分的库中

但问题是,

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

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

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

【问题讨论】:

    标签: java logging java.util.logging


    【解决方案1】:

    您不希望 .* 在您的包字符串中。 改变

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

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

    【讨论】:

    • OMG :-) 我用这个花了 30 分钟...谢谢
    • 使用Client.class.getName() 比使用字符串作为类名更好,所以如果你重构它不会破坏你的日志记录。
    猜你喜欢
    • 2017-12-25
    • 2016-07-03
    • 2023-02-21
    • 2015-06-14
    • 2013-12-13
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多