log4cplus::TimeBasedRollingFileAppender Class Reference

TimeBasedRollingFileAppender extends `FileAppenderBase` so that the underlying file is rolled over at a user chosen frequency while also keeping in check a total maximum number of produced files. More...

`#include <fileappender.h>`

Inheritance diagram for log4cplus::TimeBasedRollingFileAppender:
[legend]
Collaboration diagram for log4cplus::TimeBasedRollingFileAppender:
[legend]

## Public Member Functions

| TimeBasedRollingFileAppender (const tstring &filename=LOG4CPLUS_TEXT(""), const tstring &filenamePattern=LOG4CPLUS_TEXT("%d.log"), int maxHistory=10, bool cleanHistoryOnStart=false, bool immediateFlush=true, bool createDirs=false, bool rollOnClose=true)
| TimeBasedRollingFileAppender (const helpers::Properties &properties)
| ~TimeBasedRollingFileAppender ()
Public Member Functions inherited from log4cplus::FileAppenderBase
virtual std::locale | imbue (std::locale const &loc)
virtual std::locale | getloc () const
Public Member Functions inherited from log4cplus::Appender
| Appender ()
| Appender (const log4cplus::helpers::Properties &properties)
virtual | ~Appender ()
void | destructorImpl ()
| This function is for derived appenders to call from their destructors.
bool | isClosed () const
| Check if this appender is in closed state.
void | syncDoAppend (const log4cplus::spi::InternalLoggingEvent &event)
| This method performs threshold checks and invokes filters before delegating actual logging to the subclasses specific `append` method.
void | asyncDoAppend (const log4cplus::spi::InternalLoggingEvent &event)
| This method performs book keeping related to asynchronous logging and executes syncDoAppend() to do the actual logging.
void | doAppend (const log4cplus::spi::InternalLoggingEvent &event)
| This function checks async flag.
virtual log4cplus::tstring | getName ()
| Get the name of this appender.
virtual void | setName (const log4cplus::tstring &name)
| Set the name of this appender.
virtual void | setErrorHandler (std::unique_ptr< ErrorHandler > eh)
| Set the `ErrorHandler` for this Appender.
virtual ErrorHandler * | getErrorHandler ()
| Return the currently set `ErrorHandler` for this Appender.
virtual void | setLayout (std::unique_ptr< Layout > layout)
| Set the layout for this appender.
virtual Layout * | getLayout ()
| Returns the layout of this appender.
void | setFilter (log4cplus::spi::FilterPtr f)
| Set the filter chain on this Appender.
log4cplus::spi::FilterPtr | getFilter () const
| Get the filter chain on this Appender.
void | addFilter (log4cplus::spi::FilterPtr f)
| Add filter at the end of the filters chain.
void | addFilter (std::function< spi::FilterResult(const log4cplus::spi::InternalLoggingEvent &)>)
| Add filter at the end of the filters chain.
LogLevel | getThreshold () const
| Returns this appenders threshold LogLevel.
void | setThreshold (LogLevel th)
| Set the threshold LogLevel.
bool | isAsSevereAsThreshold (LogLevel ll) const
| Check whether the message LogLevel is below the appender's threshold.
void | waitToFinishAsyncLogging ()
| This method waits for all events that are being asynchronously logged to finish.
Public Member Functions inherited from log4cplus::helpers::SharedObject
void | addReference () const LOG4CPLUS_NOEXCEPT
void | removeReference () const

## Protected Member Functions

void | append (const spi::InternalLoggingEvent &event)
| Subclasses of `Appender` should implement this method to perform actual logging.
void | open (std::ios_base::openmode mode)
void | close ()
| Release any resources allocated within the appender such as file handles, network connections, etc.
void | rollover (bool alreadyLocked=false)
void | clean (helpers::Time time)
helpers::Time::duration | getRolloverPeriodDuration () const
helpers::Time | calculateNextRolloverTime (const helpers::Time &t) const
Protected Member Functions inherited from log4cplus::FileAppenderBase
| FileAppenderBase (const log4cplus::tstring &filename, std::ios_base::openmode mode=std::ios_base::trunc, bool immediateFlush=true, bool createDirs=false)
| FileAppenderBase (const log4cplus::helpers::Properties &properties, std::ios_base::openmode mode=std::ios_base::trunc)
void | init ()
bool | reopen ()
Protected Member Functions inherited from log4cplus::Appender
tstring & | formatEvent (const log4cplus::spi::InternalLoggingEvent &event) const
Protected Member Functions inherited from log4cplus::helpers::SharedObject
| SharedObject ()
| SharedObject (const SharedObject &)
| SharedObject (SharedObject &&)
virtual | ~SharedObject ()
SharedObject & | operator= (const SharedObject &) LOG4CPLUS_NOEXCEPT
SharedObject & | operator= (SharedObject &&) LOG4CPLUS_NOEXCEPT

## Protected Attributes

tstring | filenamePattern
DailyRollingFileSchedule | schedule
tstring | scheduledFilename
int | maxHistory
bool | cleanHistoryOnStart
log4cplus::helpers::Time | lastHeartBeat
log4cplus::helpers::Time | nextRolloverTime
bool | rollOnClose
Protected Attributes inherited from log4cplus::FileAppenderBase
bool | immediateFlush
| Immediate flush means that the underlying writer or output stream will be flushed at the end of each append operation.
bool | createDirs
| When this variable is true, FileAppender will try to create missing directories in path leading to log file.
int | reopenDelay
| When any append operation fails, `reopenDelay` says for how many seconds the next attempt to re-open the log file and resume logging will be delayed.
unsigned long | bufferSize
std::unique_ptr< log4cplus::tchar[]> | buffer
log4cplus::tofstream | out
log4cplus::tstring | filename
log4cplus::tstring | localeName
log4cplus::tstring | lockFileName
std::ios_base::openmode | fileOpenMode
log4cplus::helpers::Time | reopen_time
Protected Attributes inherited from log4cplus::Appender
std::unique_ptr< Layout > | layout
| The layout variable does not need to be set if the appender implementation has its own layout.
log4cplus::tstring | name
| Appenders are named.
LogLevel | threshold
| There is no LogLevel threshold filtering by default.
log4cplus::spi::FilterPtr | filter
| The first filter in the filter chain.
std::unique_ptr< ErrorHandler > | errorHandler
| It is assumed and enforced that errorHandler is never null.
std::unique_ptr< helpers::LockFile > | lockFile
| Optional system wide synchronization lock.
bool | useLockFile
bool | async
| Asynchronous append.
std::atomic< std::size_t > | in_flight
std::mutex | in_flight_mutex
std::condition_variable | in_flight_condition
bool | closed
| Is this appender closed?

## Additional Inherited Members

Public Attributes inherited from log4cplus::helpers::SharedObject
thread::Mutex | access_mutex

## Detailed Description

TimeBasedRollingFileAppender extends `FileAppenderBase` so that the underlying file is rolled over at a user chosen frequency while also keeping in check a total maximum number of produced files.

### Properties

Properties additional to `FileAppenderBase`'s properties:

FilenamePattern

  The mandatory fileNamePattern property defines the name of the rolled-over (archived) log files. Its value should consist of the name of the file, plus a suitably placed d conversion specifier. The d conversion specifier may contain a date-and-time pattern as specified by the java's SimpleDateFormat. The rollover period is inferred from the value of fileNamePattern.

MaxHistory

  The optional maxHistory property controls the maximum number of archive files to keep, deleting older files.

CleanHistoryOnStart

  If set to true, archive removal will be executed on appender start up. By default this property is set to false.

RollOnClose

  This property specifies whether to rollover log files upon shutdown. By default it's set to `true` to retain compatibility with legacy code, however it may lead to undesired behaviour as described in the github issue #120.

Definition at line 385 of file fileappender.h.

## Constructor & Destructor Documentation

## TimeBasedRollingFileAppender() [1/2]

log4cplus::TimeBasedRollingFileAppender::TimeBasedRollingFileAppender | ( | const tstring & | filename = LOG4CPLUS_TEXT(""),
|  | const tstring & | filenamePattern = LOG4CPLUS_TEXT("%d.log"),
|  | int | maxHistory = 10,
|  | bool | cleanHistoryOnStart = false,
|  | bool | immediateFlush = true,
|  | bool | createDirs = false,
|  | bool | rollOnClose = true )

References cleanHistoryOnStart, log4cplus::FileAppenderBase::createDirs, log4cplus::FileAppenderBase::filename, filenamePattern, log4cplus::FileAppenderBase::immediateFlush, maxHistory, and rollOnClose.

## TimeBasedRollingFileAppender() [2/2]

log4cplus::TimeBasedRollingFileAppender::TimeBasedRollingFileAppender | ( | const helpers::Properties & | properties | ) |

## ~TimeBasedRollingFileAppender()

log4cplus::TimeBasedRollingFileAppender::~TimeBasedRollingFileAppender | ( |  | ) |

## Member Function Documentation

## append()

void log4cplus::TimeBasedRollingFileAppender::append | ( | const spi::InternalLoggingEvent & | event | ) |

protected virtual

Subclasses of `Appender` should implement this method to perform actual logging.

See also
  doAppend method.

Reimplemented from log4cplus::FileAppenderBase.

## calculateNextRolloverTime()

helpers::Time log4cplus::TimeBasedRollingFileAppender::calculateNextRolloverTime | ( | const helpers::Time & | t | ) | const

protected

## clean()

void log4cplus::TimeBasedRollingFileAppender::clean | ( | helpers::Time | time | ) |

protected

## close()

void log4cplus::TimeBasedRollingFileAppender::close | ( |  | ) |

protected virtual

Release any resources allocated within the appender such as file handles, network connections, etc.

It is a programming error to append to a closed appender.

Reimplemented from log4cplus::FileAppenderBase.

## getRolloverPeriodDuration()

helpers::Time::duration log4cplus::TimeBasedRollingFileAppender::getRolloverPeriodDuration | ( |  | ) | const

protected

## open()

void log4cplus::TimeBasedRollingFileAppender::open | ( | std::ios_base::openmode | mode | ) |

protected virtual

Reimplemented from log4cplus::FileAppenderBase.

## rollover()

void log4cplus::TimeBasedRollingFileAppender::rollover | ( | bool | alreadyLocked = false | ) |

protected

## Member Data Documentation

## cleanHistoryOnStart

bool log4cplus::TimeBasedRollingFileAppender::cleanHistoryOnStart

protected

Definition at line 414 of file fileappender.h.

Referenced by TimeBasedRollingFileAppender().

## filenamePattern

tstring log4cplus::TimeBasedRollingFileAppender::filenamePattern

protected

Definition at line 410 of file fileappender.h.

Referenced by TimeBasedRollingFileAppender().

## lastHeartBeat

log4cplus::helpers::Time log4cplus::TimeBasedRollingFileAppender::lastHeartBeat

protected

Definition at line 415 of file fileappender.h.

## maxHistory

int log4cplus::TimeBasedRollingFileAppender::maxHistory

protected

Definition at line 413 of file fileappender.h.

Referenced by TimeBasedRollingFileAppender().

## nextRolloverTime

log4cplus::helpers::Time log4cplus::TimeBasedRollingFileAppender::nextRolloverTime

protected

Definition at line 416 of file fileappender.h.

## rollOnClose

bool log4cplus::TimeBasedRollingFileAppender::rollOnClose

protected

Definition at line 417 of file fileappender.h.

Referenced by TimeBasedRollingFileAppender().

## schedule

DailyRollingFileSchedule log4cplus::TimeBasedRollingFileAppender::schedule

protected

Definition at line 411 of file fileappender.h.

## scheduledFilename

tstring log4cplus::TimeBasedRollingFileAppender::scheduledFilename

protected

Definition at line 412 of file fileappender.h.

The documentation for this class was generated from the following file:

- fileappender.h