logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: Need to clear ThreadContext for each HTTP request?
Date Tue, 17 Apr 2018 16:22:05 GMT
I have mixed feelings about that. Every filter I have created that clears the ThreadContext
at the end also injects values into the ThreadContext at the beginning of the request, just
as the example at http://logging.apache.org/log4j/2.x/manual/eventlogging.html <http://logging.apache.org/log4j/2.x/manual/eventlogging.html>
does. So if you were going to create a filter you would also want to provide a method to do
the setup, so your filter code would look something like:

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain
filterChain throws IOException, ServletException {
	setupRequest(servletRequest, servletResponse);
	filterChain.doFilter(servletRequest, servletResponse);
	ThreadContext.clear();
}

public void setupRequest(servletRequest, servletResponse) {
}

But the only value this really has is the one line that was added to clear the ThreadContext.
 Is that really much of a “convenience”?

Ralph


> On Apr 17, 2018, at 6:29 AM, Gary Gregory <garydgregory@gmail.com> wrote:
> 
> Should we provide a stock Log4j filter that does that? A nice convenience.
> 
> Gary
> 
> On Mon, Apr 16, 2018 at 10:01 PM, Kevin Jung <mykevinjung@gmail.com> wrote:
> 
>> Thanks Remko and Ralph for the information.  I thought of clearing in a
>> filter, but somehow I thought there might be a clean up mechanism already
>> because using ThreadContext in Tomcat is a quite common thing.  But that
>> was just my assumption.  I agree that it's better to *clear explicitly*.
>> 
>> Thanks,
>> Kevin
>> 
>> On Mon, Apr 16, 2018 at 8:32 PM, Ralph Goers <ralph.goers@dslextreme.com>
>> wrote:
>> 
>>> See the example at http://logging.apache.org/
>>> log4j/2.x/manual/eventlogging.html <http://logging.apache.org/
>>> log4j/2.x/manual/eventlogging.html>. You will see the call to clear the
>>> ThreadContext. It does indeed use a filter.
>>> 
>>> Ralph
>>> 
>>>> On Apr 16, 2018, at 7:01 PM, Kevin Jung <mykevinjung@gmail.com> wrote:
>>>> 
>>>> Hello,
>>>> 
>>>> I am using Log4j 2 ThreadContext with Tomcat.  I wonder if I need to
>>> clear
>>>> ThreadContext at the end (or start) of HTTP request in order to avoid
>> the
>>>> context data being carried over to next HTTP request processing.
>>>> 
>>>> I was assuming that thread context is cleared when Tomcat thread is put
>>>> back in the thread pool and when a Tomcat thread starts processing new
>>> HTTP
>>>> request, it starts with an empty thread context, nothing carried over
>>> from
>>>> the previous HTTP request.  But that's my assumption, I want to make
>>> sure I
>>>> do not need to clear at the end, like using a servlet filter.  Or
>> should
>>> I
>>>> use CloseableThreadContext to avoid carrying over among HTTP requests?
>>>> 
>>>> Thanks,
>>>> Kevin
>>> 
>>> 
>> 


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