logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Maple Wang <maple.feng.w...@hotmail.com>
Subject RE: how to suppress stacktrace for PatternLayout in ConsoleAppender in Log4j 2.x
Date Sun, 20 Mar 2016 17:09:24 GMT
Hi Ralph,

Thanks very much, it works.

Best regards.

-----Original Message-----
From: Ralph Goers [mailto:ralph.goers@dslextreme.com] 
Sent: Friday, March 18, 2016 11:29 PM
To: Log4J Users List; Log4J Users List
Subject: Re: how to suppress stacktrace for PatternLayout in ConsoleAppender in Log4j 2.x

You can use a PatternSelector with Log4j 2.

Ralph

> On Mar 18, 2016, at 7:34 AM, WangMaple <maple.feng.wang@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-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Mime
View raw message