logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicholas Duane <nic...@msn.com>
Subject Re: AsyncAppender (was Re: Apache log4net Needs Help)
Date Tue, 01 Nov 2016 13:32:01 GMT
Got some questions around this.  I was hoping that if I put the call to LogManager.Shutdown()
in my application it might call Close() on all the appenders.  However, that doesn't seem
to be the case.  Not sure if the Flush() you talk about is something that might have solved
my problem.

I checked over the links you provided.  One talks about implementing a queue in an async appender
so that each developer wouldn't have to do it.  While that certainly sounds like a good thing
to do, even this implementation would need to flush its queue, or at least do as much as it
could in the time allotted, when the process shuts down.  That is the main point I'm trying
to bring up as my appender has its own queue but the Close() method doesn't give me any significant
amount of time to flush my queue and thus I'm losing events.

One of the links also provides an AsyncAppender implementation which the author claims will
address the problem of lost events on shutdown, but it appears to use the Close() method to
shutdown cleanly, which I would assume suffers from the same problem I experienced.  Namely,
the Close() method appears to be called from log4net by way of syncing the .NET app domain
shutdown event.  At that point you're not given any time to cleanup.



From: Stefan Bodewig <bodewig@apache.org>
Sent: Sunday, October 16, 2016 7:32 AM
To: Log4NET User
Subject: AsyncAppender (was Re: Apache log4net Needs Help)

On 2016-10-16, Nicholas Duane wrote:

> By the way, what's the state of async appenders in log4net?

This is one of the things I'd love people to get involved in. We've got

* a simple implementation inside the sample
* https://issues.apache.org/jira/browse/LOG4NET-190
* https://issues.apache.org/jira/browse/LOG4NET-201
* https://issues.apache.org/jira/browse/LOG4NET-407

the later even made it into the 1.3 branch (that's now been
abandoned). It would be good if anybody found the time to make it work
inside the current trunk setup.

So there are few implementations. They may share the problem mentioned

> http://stackoverflow.com/questions/36344822/log4net-appenders-onclose-doesnt-seem-to-work

I haven't checked.

> Seems like log4net should not only expose a startup routine the app
> must call but also a shutdown routine, and indicate that it's
> essential it gets called.  Then log4net could shutdown the appenders
> in the shutdown routine as opposed to relying on .NET's appdomain
> shutdown logic.

There are Shutdown methods in LogManager and LoggerManager.

The patch Joe mentions that add Flush to certain appenders and to
LogManager has been added to svn trunk and will be part of 2.0.6 (which
will be the version of the next release).


View raw message