Log4j показать имя пакета - PullRequest
11 голосов
/ 07 апреля 2010

Прямо сейчас для моего ConversionPattern у меня есть:

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

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

Ответы [ 2 ]

23 голосов
/ 07 апреля 2010

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

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

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

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

ПРЕДУПРЕЖДЕНИЕ Генерация информации о классе вызывающего абонента идет медленно.Таким образом, следует избегать использования, если скорость выполнения не является проблемой.

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

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

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

1 голос
/ 09 марта 2015

Использование C{1} медленно.Подробности см. Ниже:

Согласно следующей ссылке :

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

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

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

...