There is an example of putting stored cookie information into the MDC.  You
could easily modify it to use information from the session instead.

http://cvs.apache.org/viewcvs.cgi/logging-log4j-sandbox/src/java/org/apache/
log4j/servlet/CookieMDCFilter.java?view=markup

It doesn't do anything to remove the MDC information after the next filter
in the filter chain completes, so it might be a good idea to do that.  That
way you don't have wayward MDC info sticking around in the thread local
getting reported later in some unrelated request context.  I would do that
in a final block if possible to guarantee it gets removed.

hth,
-Mark

> -----Original Message-----
> From: Mark Lybarger [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, May 18, 2005 6:19 PM
> To: Log4J Users List
> Subject: Re: logging http session identifying information
> 
> i want to log the session id, and any other info from the session that i
> choose so that i can sort my logs per session.
> 
> i'll check out the sandbox.
> 
> On 5/18/05, Mark Womack <[EMAIL PROTECTED]> wrote:
> >
> > If I understand correctly, you want to set session/user specific
> > information
> > per request? Since the MDC is stored in ThreadLocal, I think you will
> need
> > to use a servlet filter to set and unset the MDC for each request. And
> > yes,
> > how threads are assigned to handle requests, etc is very container
> > specific.
> > So, setting and unsetting the MDC with each request is a good thing. I
> > cannot remember offhand if there is already an MDC related servlet
> filter
> > in
> > the log4j-sandbox. You might want to take a quick look and use it as an
> > example.
> >
> > -Mark
> >
> > ----- Original Message -----
> > From: "Mark Lybarger" <[EMAIL PROTECTED]>
> > To: <log4j-user@logging.apache.org>
> > Sent: Wednesday, May 18, 2005 5:47 AM
> > Subject: logging http session identifying information
> >
> >
> > I'm looking for a method to log http session information in our log4j
> > logging. we want to be able to trace logging to a particular session.
> For
> > instance, when a user reports having trouble, we would like to see what
> > they
> > did on the web site.
> >
> > We have a thread id being logged with each log, but there's no way to
> tie
> > the threads together into a session of activity. I've also read that
> it's
> > very container specific as to weather or not the same thread is used for
> > an
> > entire servlet execution.
> >
> > I came across this note on using MDC for logging session information.
> >
> >
> > http://ulc-
> community.canoo.com/snipsnap/space/Contributions/Integration+Snippets/Log4
> J+MDC+Integration
> >
> > It seems rather easy to extend to support any http session attributes
> that
> > i
> > might want to log (user id, etc).
> >
> > Are there other methods to easily log a session id or other information
> in
> > our log4j logs? Are there drawbacks to the solution of using the MDC
> > integration?
> >
> > One thing that wasn't very clear with the MDC integration was where to
> put
> > the setup code in an servlet container environment. We're using a
> startup
> > servlet in all our web apps. Would we need this in each web app's
> startup
> > servlet?
> >
> > Thanks!
> > ~mark
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to