[JIRA] Created: (LBCORE-57) FlushableAppender

FlushableAppender ----------------- Key: LBCORE-57 URL: http://jira.qos.ch/browse/LBCORE-57 Project: logback-core Issue Type: Improvement Components: Appender Affects Versions: 0.9.9 Reporter: Bruno Navert Assignee: Logback dev list Priority: Minor Attachments: FlushableAppender.java Create a FlushableAppender interface for appenders that can be manually flushed (only relevant if bufferingIO is enabled) Interface can simply extend Appender and java.io.Flushable -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira

[ http://jira.qos.ch/browse/LBCORE-57?page=com.atlassian.jira.plugin.system.is... ] Bruno Navert updated LBCORE-57: ------------------------------- Attachment: FlushableAppender.java
FlushableAppender -----------------
Key: LBCORE-57 URL: http://jira.qos.ch/browse/LBCORE-57 Project: logback-core Issue Type: Improvement Components: Appender Affects Versions: 0.9.9 Reporter: Bruno Navert Assignee: Logback dev list Priority: Minor Attachments: FlushableAppender.java
Create a FlushableAppender interface for appenders that can be manually flushed (only relevant if bufferingIO is enabled) Interface can simply extend Appender and java.io.Flushable
-- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira

[ http://jira.qos.ch/browse/LBCORE-57?page=com.atlassian.jira.plugin.system.is... ] Bruno Navert commented on LBCORE-57: ------------------------------------ One key use-case for this: trigger a manual .flush() when an error (stack trace) occurs in the application. This makes sure that the log file is always up to date in that situation, otherwise it's entirely possible that part of the stack trace is still held in the in-memory buffer, and developers looking at the log file will not see it.
FlushableAppender -----------------
Key: LBCORE-57 URL: http://jira.qos.ch/browse/LBCORE-57 Project: logback-core Issue Type: Improvement Components: Appender Affects Versions: 0.9.9 Reporter: Bruno Navert Assignee: Logback dev list Priority: Minor Attachments: DirectoryCreateRollingFileAppender.java, FlushableAppender.java
Create a FlushableAppender interface for appenders that can be manually flushed (only relevant if bufferingIO is enabled) Interface can simply extend Appender and java.io.Flushable
-- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira

[ http://jira.qos.ch/browse/LBCORE-57?page=com.atlassian.jira.plugin.system.is... ] Bruno Navert updated LBCORE-57: ------------------------------- Attachment: DirectoryCreateRollingFileAppender.java This is an example of how a WriterAppender in general can append flush() The flush() method should be made part of WriterAppender, not in a subclass like I did
FlushableAppender -----------------
Key: LBCORE-57 URL: http://jira.qos.ch/browse/LBCORE-57 Project: logback-core Issue Type: Improvement Components: Appender Affects Versions: 0.9.9 Reporter: Bruno Navert Assignee: Logback dev list Priority: Minor Attachments: DirectoryCreateRollingFileAppender.java, FlushableAppender.java
Create a FlushableAppender interface for appenders that can be manually flushed (only relevant if bufferingIO is enabled) Interface can simply extend Appender and java.io.Flushable
-- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira

[ http://jira.qos.ch/browse/LBCORE-57?page=com.atlassian.jira.plugin.system.is... ] Bruno Navert commented on LBCORE-57: ------------------------------------ Here's example code using this: first a static utility method to retrieve all Appenders public static Set<Appender> getAllAppenders() { ContextSelector selector = StaticLoggerBinder.SINGLETON.getContextSelector(); LoggerContext loggerContext = selector.getLoggerContext(); Map<String, Appender> appenders = newHashMap(); // loop through all Loggers for ( Logger logger : loggerContext.getLoggerList() ) { // for each logger, loop through all its appenders Iterator iter = logger.iteratorForAppenders(); while ( iter.hasNext() ) { // appenders are uniquely identified by name, so store them in the Map thus // this will overwrite the same entry in the Map many times (with the same reference) Appender appender = ( Appender ) iter.next(); appenders.put( appender.getName(), appender ); } } return newHashSet( appenders.values() ); } Then code which runs once to load all flushable appenders in a list: for ( Appender appender : LogbackConfigurer.getAllAppenders() ) { if ( appender instanceof FlushableAppender ) { flushableAppenders.add( ( FlushableAppender ) appender ); } else { log.debug( "appender {} is not Flushable, skipping", appender ); } } And when needed, flush: for ( FlushableAppender appender : flushableAppenders ) { log.debug( "flushing appender {}", appender ); appender.flush(); }
FlushableAppender -----------------
Key: LBCORE-57 URL: http://jira.qos.ch/browse/LBCORE-57 Project: logback-core Issue Type: Improvement Components: Appender Affects Versions: 0.9.9 Reporter: Bruno Navert Assignee: Logback dev list Priority: Minor Attachments: DirectoryCreateRollingFileAppender.java, FlushableAppender.java
Create a FlushableAppender interface for appenders that can be manually flushed (only relevant if bufferingIO is enabled) Interface can simply extend Appender and java.io.Flushable
-- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira

[ http://jira.qos.ch/browse/LBCORE-57?page=com.atlassian.jira.plugin.system.is... ] Ceki Gulcu resolved LBCORE-57. ------------------------------ Resolution: Duplicate
FlushableAppender -----------------
Key: LBCORE-57 URL: http://jira.qos.ch/browse/LBCORE-57 Project: logback-core Issue Type: Improvement Components: Appender Affects Versions: 0.9.9 Reporter: Bruno Navert Assignee: Logback dev list Priority: Minor Attachments: DirectoryCreateRollingFileAppender.java, FlushableAppender.java
Create a FlushableAppender interface for appenders that can be manually flushed (only relevant if bufferingIO is enabled) Interface can simply extend Appender and java.io.Flushable
-- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
participants (2)
-
Bruno Navert (JIRA)
-
Ceki Gulcu (JIRA)