13 messages in org.apache.logging.log4j-userRe: Log4j category for a thread
FromSent OnAttachments
Tony ThompsonJun 7, 2004 8:30 pm 
Paul SmithJun 7, 2004 8:43 pm 
Tony ThompsonJun 8, 2004 6:11 am 
Ceki GülcüJun 8, 2004 7:20 am 
Tony ThompsonJun 8, 2004 8:00 am 
Ceki GülcüJun 8, 2004 8:36 am 
Tony ThompsonJun 8, 2004 9:06 am 
Paul SmithJun 8, 2004 3:21 pm 
Larry YoungJun 8, 2004 4:09 pm 
Tony ThompsonJun 8, 2004 5:31 pm 
Paul SmithJun 8, 2004 5:57 pm 
Sullivan, Sean C - MWTJun 8, 2004 6:04 pm 
Tony ThompsonJun 8, 2004 8:07 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Log4j category for a threadActions...
From:Paul Smith (psm@apache.org)
Date:Jun 7, 2004 8:43:12 pm
List:org.apache.logging.log4j-user

What I think you want to use either the Nested Diagnostic Context (NDC) or the Mapped Diagnostic Context that is part of log4j and then have your appenders output them.

The NDC is a stack that you can push things on as your code goes down the call stack. The MDC is useful as a ThreadLocal map that is often used to track such things as the User/IP etc of the user making the current request.

Probably best to see this JavaDoc:

MDC: http://logging.apache.org/log4j/docs/api/org/apache/log4j/MDC.html NDC: http://logging.apache.org/log4j/docs/api/org/apache/log4j/NDC.html

cheers,

Paul Smith

On Mon, 7 Jun 2004, Tony Thompson wrote:

Is there any way currently to set a logging "context" for a thread? For example, if I have a utility method that I call from two other methods, I don't want to create a new category just for that utility method.

void methodA() { utilityMethod( ... ); ... }

void methodB() { utilityMethod( ... ); ... }

When utilityMethod() is called from methodA(), I want it to use the logging category established for methodA(). When it is called from methodB(), I want it to use the category for methodB().

I would prefer not to pass in the Logger when I call utilityMethod() because I want to do this in existing code and it would take a bunch of extra work and be unnecessarily ugly. What would be ideal would be to have the LogManager keep a ThreadLocal with the current logging "context" (probably a stack). As methods get called, they can push a new logging context onto the stack, if they wish or simply let the current one be used for the current thread of execution.

If log4j can't do this for me, would it make sense for log4j to offer this type of functionality?

Thanks for any help. Tony