Отключение awt / swing сообщений отладки (штрафа) - PullRequest
9 голосов
/ 17 мая 2011

Я использую протоколирование Java для записи сообщений журнала моего приложения в файл журнала и другие места назначения. Установив уровень журнала на FINE, я также получаю (нежелательные) сообщения от AWT / Swing, такие как:

{0}, when grabbed {1}, contains {2}

и другие. Глядя на исходный код JDK (см., Например, здесь ), можно увидеть, что имя соответствующего регистратора равно sun.awt.X11.grab.XWindowPeer.

Что я понял из среды ведения журналов Java, так это то, что этот обработчик ведения журнала должен наследовать свой уровень регистрации от своих родителей, как sun.awt.

Я попробовал следующее:

Logger.getLogger("sun.awt").setLevel(Level.OFF);

но отладочные сообщения AWT / Swing по-прежнему появляются в выходных данных журнала.

Какой рекомендуемый способ программно отключить эти сообщения журнала (при этом все еще разрешая FINE сообщения из других источников)?

Ответы [ 5 ]

5 голосов
/ 30 мая 2012

Если вы просто хотите регистрировать сообщения вашего собственного приложения , вы можете отключить все сообщения и затем явно включить сообщения для вашего приложения:

Logger.getRootLogger().setLevel(Level.OFF);
Logger.getLogger("package.of.your.application").setLevel(Level.ALL);

Внутри файла свойствдля регистрации (например, logging.properties) это будет:

.level = OFF
package.of.your.application.level = ALL
1 голос
/ 28 августа 2014
    Logger.getLogger("java.awt").setLevel(Level.OFF);
    Logger.getLogger("sun.awt").setLevel(Level.OFF);
    Logger.getLogger("javax.swing").setLevel(Level.OFF);
1 голос
/ 31 января 2014

Я больше не мог найти метод getRootLogger () в классе Logger.Вот что у меня работает:

logger = Logger.getLogger("my.package");
Logger l = logger;
while (l != null) {
    l.setLevel(Level.OFF);
    l = l.getParent();
}            
logger.setLevel(Level.FINER);
1 голос
/ 10 февраля 2012

У меня была такая же проблема сегодня.Поиск в Google это верхний URL, и я не могу найти хороший источник ответа, поэтому я опубликую свой:)

Предполагая, что Андре использует java.util.logging API, можно добавить Handler, который будет контролировать формат вашего журнала, используя setFormatter(Formatter newFormatter).

Поэтому я расширил Formatter и проверил, содержит ли класс журнала java.awt, javax.swing или sun.awt.

class MyFormatLog extends Formatter {

    @Override
    public String format(LogRecord record) {
        if( !record.getSourceClassName().contains("java.awt") &&
        !record.getSourceClassName().contains("javax.swing.") &&
        !record.getSourceClassName().contains("sun.awt.") ) {
          //format my output...
        } else {
          return "";
        }
    }

}
0 голосов
/ 30 мая 2011

Try . Logger.getRootLogger () setLevel (Level.OFF);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...