logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: Async DynamicThresholdFilter broken?
Date Tue, 19 Jan 2016 20:33:19 GMT
On Tue, Jan 19, 2016 at 12:22 PM, Gary Gregory <garydgregory@gmail.com>
wrote:

> Hm... what about:
>
> org.apache.logging.log4j.core.Filter.filter(Logger, Level, Marker,
> Message, Throwable)
> org.apache.logging.log4j.core.Filter.filter(Logger, Level, Marker, Object,
> Throwable)
> org.apache.logging.log4j.core.Filter.filter(Logger, Level, Marker, String,
> Object...)
>

I think Ralph will have to clarify but I think that these APIs are called
only on the same thread as the call site unlike filter(LogEvent).

So what you have in your initial email looks good.

Gary


>
> These are not given a log event.
>
> Gary
>
> On Tue, Jan 19, 2016 at 12:18 PM, Gary Gregory <garydgregory@gmail.com>
> wrote:
>
>> [I hit 'Send' by mistake!]
>>
>> Hi Francis,
>>
>> It sounds like POB (Plain Old Bug) to me. Can you create a JIRA and
>> attach a diff file please?
>>
>> We should also look at all the call sites for ThreadContext.get(String)
>> and readers of ThreadContext in general.
>>
>> Francis, if you can give a scan for similar ThreadContext issues, I would
>> greatly appreciate it.
>>
>> Thank you!
>> Gary
>>
>> On Tue, Jan 19, 2016 at 12:15 PM, Gary Gregory <garydgregory@gmail.com>
>> wrote:
>>
>>> Sounds like POB (Plain Old Bug). Can you create a JIRA and attach a diff
>>> file please?
>>>
>>>
>>> On Tue, Jan 19, 2016 at 11:51 AM, Francis Lalonde <
>>> fralalonde@expedia.com> wrote:
>>>
>>>> Hello Log4J users,
>>>>
>>>> I am using Log4J 2.5 with AsyncLogger mode enabled. I am trying to
>>>> filter events at the Appender level using DynamicThresholdFilter but it is
>>>> not working.
>>>>
>>>> I believe this is because the filter is basing its decision on the
>>>> ThreadContext even though it is filtering an asynchronous event on a worker
>>>> thread :
>>>>
>>>>     private Result filter(final Level level) {
>>>>         final Object value = ThreadContext.get(key); // always returns
>>>> null, ThreadContext is empty on disruptor thread
>>>>         if (value != null) {
>>>> ...
>>>>
>>>> I fixed the DynamicThresholdFilter to use the context from the log
>>>> event instead,  and it  gave me the expected filtering behavior :
>>>>
>>>>     private Result filter(final Level level, Map<String, String>
>>>> context) {
>>>>         final Object value = context.get(key);
>>>>         if (value != null) {
>>>> ...
>>>>
>>>>     public Result filter(final LogEvent event) {
>>>>         return filter(event.getLevel(), event.getContextMap());
>>>>     }
>>>>
>>>>     public Result filter(final Logger logger, final Level level, final
>>>> Marker marker, final Message msg,
>>>>                          final Throwable t) {
>>>>         return filter(level, ThreadContext.getContext());
>>>>     }
>>>>
>>>> ThreadContextMapFilter is built the same way. Unless I am mistaken and
>>>> forgot some basic tenement of log4j usage, this make these Filters useless
>>>> in async mode elsewhere than Context-wide.
>>>>
>>>> Should I keep  on using my fixed version of the Filter or should I
>>>> submit a tentative fix? If so, please tell me what is the procedure to do
>>>> so.
>>>>
>>>> Thank you,
>>>>
>>>> Francis
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> E-Mail: garydgregory@gmail.com | ggregory@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
>>>
>>
>>
>>
>> --
>> E-Mail: garydgregory@gmail.com | ggregory@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
>>
>
>
>
> --
> E-Mail: garydgregory@gmail.com | ggregory@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
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message