You can use a PatternSelector with Log4j 2. Ralph
> On Mar 18, 2016, at 7:34 AM, WangMaple <maple.feng.w...@hotmail.com> wrote: > > Hi, > > > > I'm trying to realize a feature which can programmatically > suppress exception's stacktrace for PatternLayout in ConsoleAppender in Log4j > 2.x. Actually it’s very easy to do that in Log4j 1.x, I just extend the > PatternLayout like below: > > > > public class MyPatternLayout extends PatternLayout { > > … > > Public void > format(LoggingEvent event) { > > > // according to event to decide if ignores throwable > > } > > > > Public Boolean > ignoresThrowable() { > > > Return ignoresThrowable; > > } > > … > > } > > > > Then replace old PatternLayout with MyPatternLayout. > > > > But in Log4j 2.x(mine is log4j 2.5), PatternLayout has no > such interfaces for usage anymore, the pattern like “%throwable{none}” can > suppress the stacktrace, but it’s not programmatic way I expect. > > > > I guess ThrowablePatternConverter is used to handle the > throwables instead here, but after several attempts, I come up with some > questions: > > > > 1 intially, I thought handlesThorwable() in > ThrowablePatternConverter is similar with ignoresThrowable(), but I’m wrong, > it’s not working as I expect, the customized converter as below: > > @Plugin(name = "MyThrowablePatternConverter", > category = "Converter") > > @ConverterKeys({ "myThrowable" }) > > public class MyThrowablePatternConverter extends ThrowablePatternConverter > { > > > > protected MyPatternConverter(String name, > String style, String[] options) { > > super(name, > style, options); > > } > > > > public static MyPatternConverter > newInstance(final String[] options) { > > return new > MyPatternConverter("MyThrowable", "throwable", options); > > } > > > > @Override > > public void format(LogEvent event, > StringBuilder buffer) { > > > super.format(event, buffer); > > } > > > > @Override > > public boolean handlesThrowable() { > > return false; > > } > > > > } > > I let handlesThrowable() return false and use > “%myThrowable{full}” in my configuration file, but when I insert the exception > in logging API, the stacktrace is still printed. What should I do to suppress > it? > > > > 2 I understand that the Pattern converter must come up with > converter key, but is it possible for user to modify the behavior of built-in > PatternConverter? There are three built-in throwable-related PatternConverter > as I know: ThrowablePatternConverter and its subclass > ExtendedThrowablePatternConverter > and RootThrowablePatternConverter, the according keys are like throwable, > xThrowable and rThrowable, I want to reuse these keys but works in my expected > way. Is that possible? > > > > Thanks in advance. > > > > Best regards. --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org