Joe created LOG4NET-511:
---------------------------
Summary: API to flush appenders
Key: LOG4NET-511
URL: https://issues.apache.org/jira/browse/LOG4NET-511
Project: Log4net
Issue Type: Wish
Components: Appenders, Core
Affects Versions: 1.2.15
Environment: NA
Reporter: Joe
Priority: Minor
Fix For: 1.2.16
I would like to see an API that flushes any appenders that have buffered data.
E.g. a method LogManager.Flush(). An application might call such a method at
regular intervals, e.g. on a Timer.
A naive implementation with the current log4net would iterate through
appenders, looking for those that support flushing, and call the appender's
flush method, e.g.:
foreach (IAppender appender in
LogManager.GetRepository().GetAppenders())
{
BufferingAppenderSkeleton bas = appender
as BufferingAppenderSkeleton;
if (bas != null) bas.Flush();
}
But (a) I'm not sure this is thread-safe and (b) there are potentially other
appenders that may want to be able to flush data (e.g. a TextWriterAppender
with ImmediateFlush = false).
The request consists of:
- Add an interface, IFlushableAppender or equivalent, with a single method
Flush().
- Implement this interface in all relevant appenders
(BufferingAppenderSkeleton, TextWriterAppender, ...)
- Add a thread-safe static Flush() method to LogManager.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)