I have to convert a pattern layout written for log4j 1.2. to log4j2.
Following code snippet shows a part of it. I have searched a lot about this
but couldn't find a proper guide.
Can anyone please give me a brief guide about how to do this conversion ?
Any help is highly appreciated!
public class CustomPatternLayout extends PatternLayout {
public static final String DEFAULT_PATTERN = "[%T][%S]";
private static String customPattern = DEFAULT_PATTERN;
public CustomPatternLayout(String pattern) {
super(pattern);}
public synchronized void setCustomPattern(String customPattern) {
CustomPatternLayout.customPattern = customPattern;}
private static class customPatternParser extends PatternParser {
protected void finalizeConverter(char c) {
PatternConverter pc = null;
switch (c) {
case 'P':
pc = new UserNamePatternConverter(formattingInfo,
extractPrecisionOption());
break;
.
.
.
default:
super.finalizeConverter(c);
}
if (pc != null) {
currentLiteral.setLength(0);
addConverter(pc);
}
}
private abstract static class CustomNamedPatternConverter extends
PatternConverter {
private int precision;
public CustomNamedPatternConverter(FormattingInfo
formattingInfo, int precision) {
super(formattingInfo);
this.precision = precision;
}
protected abstract String getFullyQualifiedName(LoggingEvent event);
public String convert(LoggingEvent event) {
String n = getFullyQualifiedName(event);
if (n == null) {
return "";
}
if (precision <= 0) {
return n;
} else {
int len = n.length();
int end = len - 1;
for (int i = precision; i > 0; i--) {
end = n.lastIndexOf('.', end - 1);
if (end == -1) {
return n;
}
}
return n.substring(end + 1, len);
}
}
}
private static class MyPatternConverter extends
CustomNamedPatternConverter {
public MyPatternConverter(FormattingInfo formattingInfo, int
precision) {
super(formattingInfo, precision);
}
public String getFullyQualifiedName(LoggingEvent event) {
int userId = //Get user Id
if ( . . .) {
return new CustomPatternLayout(customPattern).format(event);
}
return someOther;
}
}}}
Thanks in advance.
--
Chathura Priyankara,
Faculty of Information Technology,
University of Moratuwa.
Blog : www.codeoncloud.blogspot.com