Log4j показывают имя пакета

Прямо сейчас для моего ConversionPattern я имею:

log4j.appender.A1.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS} %5p [%t] (%F:%L) - %m%n

То, что я хотел бы сделать, также включают полное имя пакета с классом (%F: % L), но я не могу найти, что любая конфигурация делает так в документах. Я действительно понимаю, что это будет медленнее, но это только для отладки и не, когда система будет работать.

11
задан Stephane Grenier 7 April 2010 в 18:15
поделиться

1 ответ

Возможно, я вас неправильно понял, но% C выведет ваш класс с пакетом.

Из документов, на которые есть ссылка:

% C

Используется для вывода полного имени класса вызывающего абонента, отправившего запрос на ведение журнала . За этим спецификатором преобразования может дополнительно следовать спецификатор точности, то есть десятичная константа в скобках.

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

Например, для имени класса "org.apache.xyz.SomeClass" шаблон % C {1} выведет "SomeClass".

ВНИМАНИЕ! Информация о классе вызывающего абонента создается медленно. Таким образом, следует избегать использования , если только скорость выполнения не является проблемой.

Обновление: Во многих случаях вы также можете использовать% c, который также распечатает полный класс с пакетом, если ваша категория - это ваше имя класса. Например, когда вы делаете подобные вещи при инициализации журнала:

private static final Log LOG = LogFactory.getLog(MyClazz.class);

Использование% c не замедляет.

23
ответ дан 3 December 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: