Ok I'll check.
Thank you all for the great support.

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

> See the RegexReplacementConverter. It does something similar.
>
> Ralph
>
>
>
> On May 18, 2015, at 9:10 AM, Chathura Priyankara <priyankara...@gmail.com>
> wrote:
>
> Hi Ralph,
>
> Thanks for the response.
> It is conditionally including that pattern. (This application uses log4j
> via commons API so that I cannot use thread context maps)
> Using a converter for P how could I get the part within the curly braces
> and convert it ?
> Does the pattern parser comes inside the Converter ?
>
> On Mon, May 18, 2015 at 9:15 PM, Ralph Goers <ralph.go...@dslextreme.com>
> wrote:
>
>> I am a bit confused when you say if the conversion type is %P then the
>> log information of CustomPattern will print. Are you saying it would be as
>> if the pattern was
>>
>> [%d] %U%@%D[%T]%5p {%c} - %x %m%n
>>
>> ?
>>
>> If so, why isn’t the pattern just set to that?  If you mean you want to
>> conditionally include that pattern than you would want to do something like:
>>
>> [%d] %P{%U%@%D[%T]}%5p {%c} - %x %m%n
>>
>> The pattern converter for %P should be passed the pattern within the
>> curly braces and would then need to create its own PatternParser instance
>> for that pattern and then call the formatters in the format method.
>>
>> Ralph
>>
>>
>>
>> On May 18, 2015, at 7:40 AM, Chathura Priyankara <priyankara...@gmail.com>
>> wrote:
>>
>> 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
>
>
>


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

Reply via email to