Hi Ralph,

There are some custom information that I need to log. Please see the
following log4j properties.

log4j.appender.CONSOLE.layout=com.test.custom.PatternLayoutClass
log4j.appender.CONSOLE.layout.ConversionPattern=[%d] %P%5p {%c} - %x %m%n
log4j.appender.CONSOLE.layout.CustomPattern=%U%@%D[%T]

Here some custom Conversion characters such as U, D etc. are used. If
the conversion type is %P
for ConversionPattern then the log information of CustomPattern will print.
Can you please tell me how could I do the same thing with log4j2 ?

Thank you very much for the reply.



On Mon, May 18, 2015 at 6:25 PM, Ralph Goers <ralph.go...@dslextreme.com>
wrote:

> 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
>
>


-- 
Chathura Priyankara,
Faculty of Information Technology,
University of Moratuwa.
Blog  : www.codeoncloud.blogspot.com

Reply via email to