You shouldn't need to do this.  What is different about your layout than what 
comes with Log4j? If you simply have a custom pattern or 2 then you would just 
implement those as converters.

Ralph

> On May 18, 2015, at 5:41 AM, Chathura Priyankara <priyankara...@gmail.com> 
> wrote:
> 
> 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

Reply via email to