Hi Gary,

Thanks for the prompt response.
(For my purpose cannot use Thread context maps because these log
information are highly user configurable)
Could you please tell me one thing. If I have custom pattern layout plugin
eg: (plugin name = CustomPatternLayout).
How would I configure this for a particular appender using log4j2.xml?

Eg:

<Console name="CONSOLE" target="SYSTEM_OUT">
      <PatternLayout pattern="%U%D[%T]"/>
</Console>

Here how can I configure console appender to use my CustomPatternLayout ?

Thanks.


On Mon, May 18, 2015 at 8:46 PM, Gary Gregory <garydgreg...@gmail.com>
wrote:

> Can you achieve the same result with Thread context perhap?
>
> Gary
>
>
> -------- Original message --------
> From: Chathura Priyankara <priyankara...@gmail.com>
> Date: 05/18/2015 07:40 (GMT-08:00)
> To: Log4J Developers List <log4j-dev@logging.apache.org>
> Subject: Re: [Dev][log4j2] How to create custom pattern layout in log4j2
>
> 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
>



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

Reply via email to