Подтвердить что ты не робот

Log4j: сокращать/сокращать имена пакетов

Как бы сокращать/сокращать имена пакетов в журнале, сгенерированном с помощью log4j. то есть вместо com.longpackage.anotherpackage.lastpackage.MyClass я хочу c.l.a.l.MyClass. Я видел это в Artifactory, но не могу понять, как это сделать, используя log4j.

4b9b3361

Ответ 1

Оказывается, что это возможно, используя log4j в конце концов (проверено с помощью v1.2.16), благодаря Tomasz Nurkiewicz для указания на LogBack. Функция, ConversionWord, доступна с помощью макета EnhancedPatternLayout.

Из javadoc

... For example, for the category name "alpha.beta.gamma" the pattern %c{2} will output the last two elements ("beta.gamma"), %c{-2} will remove two elements leaving "gamma", %c{1.} will output "a.b.gamma" ...

Я использую JBoss и должен был обновить log4j и использовать приведенный выше макет.

Ответ 2

Artifactory использует Logback:

Проекты, которые, как известно, полагаются на logback:

  • [...]

  • Artifactory

у которого есть эта хорошая функция, называемая Конверсионное Word:

Conversion specifier | Logger name                | Result

%logger              | mainPackage.sub.sample.Bar | mainPackage.sub.sample.Bar
%logger{0}           | mainPackage.sub.sample.Bar | Bar
%logger{5}           | mainPackage.sub.sample.Bar | m.s.s.Bar
%logger{10}          | mainPackage.sub.sample.Bar | m.s.s.Bar
%logger{15}          | mainPackage.sub.sample.Bar | m.s.sample.Bar
%logger{16}          | mainPackage.sub.sample.Bar | m.sub.sample.Bar
%logger{26}          | mainPackage.sub.sample.Bar | mainPackage.sub.sample.Bar

* Я пропустил таблицы в SO markdown sooo much...

Ответ 3

Похоже, вам нужно реализовать свой собственный Appender, чтобы сделать эту работу в log4j.