Есть ли способ удалить информационную строку из вывода java.util.logging.Logger? - PullRequest
10 голосов
/ 16 февраля 2012

Использование java.util.logging.Logger для вывода некоторого журнала на консоль, например, так:

public static void main(String[] args) {
    Logger logger = Logger.getLogger("test");
    logger.info("Hello Wolrd!");
}

Вывод:

FEB 16, 2012 10:17:43 AM com.abc.HelloWorld main
INFO: Hello World.

Кажется, все в порядке ...

Мы используем java.util.logging.Logger во всех наших задачах Ant (внутренний стандарт), и у нас есть большой проект ant. Выход консоли полного цикла может превышать 300 КБ, при этом вывод нашего собственного регистратора занимает не менее 50.

Теперь я не хочу видеть информацию о времени, имени класса и методе выходных данных Level.INFO. Также в информационной строке сложно сосредоточиться на пользовательских сообщениях.

Так есть ли способ удалить первую строку (информацию о временной метке, классе и методе) из каждого выхода (или только из каждого выхода Level.INFO)?

1 Ответ

6 голосов
/ 16 февраля 2012

См. Как отобразить вывод журнала Java в одной строке? . Однако единственная разница заключается в удалении первой строки, а не в одной.

Чтобы сделать это только для уровней INFO, расширьте форматер, который вы хотите условно изменить (например, SimpleFormatter), и переопределите метод format. Вы могли бы сделать что-то вроде этого:

public String format(LogRecord record){
  if(record.getLevel() == Level.INFO){
    return record.getMessage() + "\r\n";
  }else{
    return super.format(record);
  }
}

Если вы делаете это только для INFO, вам, вероятно, не нужен префикс "INFO:" - но вы можете добавить его обратно, если хотите.

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