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 <[email protected]> wrote: > > On Tue, Jan 19, 2016 at 12:22 PM, Gary Gregory <[email protected]> > 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 <[email protected]> >> 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 <[email protected]> >>> 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 < >>>> [email protected]> 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: [email protected] | [email protected] >>>> 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: [email protected] | [email protected] >>> 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: [email protected] | [email protected] >> 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: [email protected] | [email protected] > 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: [email protected] | [email protected] 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
