You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-user@logging.apache.org by Matt Lund <ml...@control4.com> on 2009/06/11 19:15:33 UTC
Using thread context data from a filter to decide whether to append...
Hi all. I'd like to know if I'm doing this correctly. I want to set a
value in ThreadContext.Properties from application code. I then want
some appenders to log or not log based on this contextual information.
I believe the right way to do this is to create a class that implements
IFilter and apply some filters to the these appenders.
So far I've created my filter class, and I've added the
ThreadContext.Properties["foo"] = "bar" to my application code.
Now, I'm looking at how to implement the Decide method on my filter
class. I had assumed that the "foo"-"bar" information would be
available in the LoggingEvent that gets passed in to Decide but if it's
there, I don't see it. However, if I directly access
ThreadContext.Properties["foo"] from inside the Decide method then that
works. This seemed odd to me at first because I didn't know that
Decide() would always be called on the thread where the log.Info("etc")
call came from. But if Decide() is always called on that thread, I
should be safe to access ThreadContext.Properties["foo"] from inside
Decide() - right?
If I'm not correct or there's a better way to access the
thread-contextual information from inside Decide() please let me know...
RE: Using thread context data from a filter to decide whether to append...
Posted by Matt Lund <ml...@control4.com>.
Bump J Hoping for some feedback...
From: Matt Lund [mailto:mlund@control4.com]
Sent: Thursday, June 11, 2009 11:16 AM
To: log4net-user@logging.apache.org
Subject: Using thread context data from a filter to decide whether to
append...
Hi all. I'd like to know if I'm doing this correctly. I want to set a
value in ThreadContext.Properties from application code. I then want
some appenders to log or not log based on this contextual information.
I believe the right way to do this is to create a class that implements
IFilter and apply some filters to the these appenders.
So far I've created my filter class, and I've added the
ThreadContext.Properties["foo"] = "bar" to my application code.
Now, I'm looking at how to implement the Decide method on my filter
class. I had assumed that the "foo"-"bar" information would be
available in the LoggingEvent that gets passed in to Decide but if it's
there, I don't see it. However, if I directly access
ThreadContext.Properties["foo"] from inside the Decide method then that
works. This seemed odd to me at first because I didn't know that
Decide() would always be called on the thread where the log.Info("etc")
call came from. But if Decide() is always called on that thread, I
should be safe to access ThreadContext.Properties["foo"] from inside
Decide() - right?
If I'm not correct or there's a better way to access the
thread-contextual information from inside Decide() please let me know...