logging-log4net-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joe (JIRA)" <j...@apache.org>
Subject [jira] [Created] (LOG4NET-511) API to flush appenders
Date Thu, 21 Apr 2016 20:58:13 GMT
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)

Mime
View raw message