logging-log4net-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Farrington, Linda" <lfarring...@aclara.com>
Subject RE: asynchronous logging
Date Tue, 30 Jul 2013 21:42:40 GMT
Chinh Do,
Thanks for your suggestion.  This sounds like it might work.  I did not write this component,
we are using one that someone else wrote and posted on github.  Are you talking about the
Properties() that is on the LoggingEvent object?  If so, there is a point in the code where
I see the correct data in ThreadingContext.  I could get it out of there and put it into Properties.
 However, I have not been able to find a way to iterate through the ThreadingContext because
it does not have a GetEnumerator on it. How are you able to get data out of the threadContext?

From: chinhdo@gmail.com [mailto:chinhdo@gmail.com] On Behalf Of Chinh Do
Sent: Tuesday, July 30, 2013 4:28 PM
To: Log4NET Dev
Subject: Re: asynchronous logging

What I did my my AsyncAppender was to write thread specific data into loggingEvent.Properties
in the main thread, just before I add the loggingEvent to a queue. Then you can use "%P{<PropertyName>}"
in your log4net config section to get them later in the other thread.

My AsyncAppender was based on log4net AsyncAppender example (see http://logging.apache.org/log4net/release/example-apps.html).
The log events sent to AsyncAppender are forwarded asynchronously to a list of attached appenders.

On Tue, Jul 30, 2013 at 2:31 PM, George Chung <george@glympse.com<mailto:george@glympse.com>>
If you authored your own AsynchronousAdoNetAppender that uses the new .NET async/await constructs,
you could use the TPL library to wrap the ado.net<http://ado.net> async operations as
a Task.

Then if you avoid calling ConfigureAwait(false), I'm pretty sure the completion routine will
complete on the original ASP.NET<http://ASP.NET> request thread, in which case you'll
have access to the original HttpContext that started the request.

On Tue, Jul 30, 2013 at 8:31 AM, Farrington, Linda <lfarrington@aclara.com<mailto:lfarrington@aclara.com>>

We are trying to log asynchronously using an asynchronousadonetappender inherited from adonetappender.
  Logging standard properties seems to work fine, but custom properties do not.  I understand
that this is because the asynchronous appender is logging the messages on another thread and
we're storing the custom properties in the logicalthreadcontext (tried threadcontext = as
well to no avail).  My question is this:  If I cannot use the threadcontext when running asynchronously,
how should I pass custom properties into log4net.  Has anyone else done this?  Can anyone
provide any suggestions?

Thanks in advance,


View raw message