Please see https://logging.apache.org/log4j/2.x/manual/extending.html
Gary On Mon, May 18, 2015 at 8:30 AM, Chathura Priyankara < priyankara...@gmail.com> wrote: > 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 > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory