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 <[email protected]> wrote:

> If you authored your own AsynchronousAdoNetAppender that uses the new .NET
> async/await constructs, you could use the TPL library to wrap the 
> ado.netasync 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 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 <[email protected]
> > wrote:
>
>>  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,****
>>
>> ** **
>>
>> Linda****
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>
>


-- 
http://www.chinhdo.com

Reply via email to