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 Wed, 20 Jan 2016 04:57:02 GMT
Francis:

Please close the ticket if it works for you:
https://issues.apache.org/jira/browse/LOG4J2-1258

You can build from Git master or pick up a SNAPSHOT build from
https://repository.apache.org/content/repositories/snapshots/

Thank you,
Gary

On Tue, Jan 19, 2016 at 12:33 PM, Gary Gregory <garydgregory@gmail.com>
wrote:

>
> 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
>



-- 
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