On Tue, Apr 17, 2018 at 10:22 AM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 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”? > If that saves me the 30 minutes to Google, filter, understand, copy, and paste, then yes it is worth it. Gary > > Ralph > > > > On Apr 17, 2018, at 6:29 AM, Gary Gregory <garydgreg...@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 <mykevinj...@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.go...@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 <mykevinj...@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 > >>> > >>> > >> > >