log4j: abbreviate/shorten package names

JavaLog4jLogging

Java Problem Overview


How would i abbreviate/shorten package names in log generated using log4j. i.e. instead of com.longpackage.anotherpackage.lastpackage.MyClass i want c.l.a.l.MyClass. I have seen this in Artifactory logs, but can't figure how to achieve this using log4j.

Java Solutions


Solution 1 - Java

It turns out that this is possible using log4j after all(tested using v1.2.16), thanks to Tomasz Nurkiewicz for pointing me to LogBack. The feature, ConversionWord, is available using the EnhancedPatternLayout layout.

From the 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" ...

I'm using JBoss and had to upgrade log4j and use the above layout.

Solution 2 - Java

Artifactory uses Logback:

> Projects known to rely on logback: > > * [...] > > * Artifactory

which has this nice feature called Conversion 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionn002213fView Question on Stackoverflow
Solution 1 - Javan002213fView Answer on Stackoverflow
Solution 2 - JavaTomasz NurkiewiczView Answer on Stackoverflow