log4cplus::FileAppenderBase Class Reference

Base class for Appenders writing log events to a file. More...

`#include <fileappender.h>`

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

## Public Member Functions

virtual void | close ()
| Release any resources allocated within the appender such as file handles, network connections, etc.
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

| 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 ()
virtual void | append (const spi::InternalLoggingEvent &event)
| Subclasses of `Appender` should implement this method to perform actual logging.
virtual void | open (std::ios_base::openmode mode)
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

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

Base class for Appenders writing log events to a file.

It is constructed with uninitialized file object, so all classes derived from FileAppenderBase must call init() method.

### Properties

File

  This property specifies output file name.

ImmediateFlush

  When it is set true, output stream will be flushed after each appended event.

Append

  When it is set true, output file will be appended to instead of being truncated at opening.

ReopenDelay

  This property sets a delay after which the appender will try to reopen log file again, after last logging failure.

BufferSize

  Non-zero value of this property sets up buffering of output stream using a buffer of given size.

UseLockFile
  Set this property to true if you want your output to go into a log file shared by multiple processes. When this property is set to true then log4cplus uses OS specific facilities (e.g., `lockf()`) to provide inter-process file locking.
  See also
    Appender
LockFile
  This property specifies lock file, file used for inter-process synchronization of log file access. When this property is not specified, the value is derived from File property by addition of ".lock" suffix. The property is only used when UseLockFile is set to true.
  See also
    Appender
Locale
  This property specifies a locale name that will be imbued into output stream. Locale can be specified either by system specific locale name, e.g., en_US.UTF-8, or by one of four recognized keywords: GLOBAL, DEFAULT (which is an alias for GLOBAL), USER and CLASSIC. When specified locale is not available, GLOBAL is used instead. It is possible to register additional locale keywords by registering an instance of `spi::LocaleFactory` in `spi::LocaleFactoryRegistry`.
  See also
    spi::getLocaleFactoryRegistry()
CreateDirs

  Set this property to true if you want to create missing directories in path leading to log file and lock file.

TextMode
  Set this property to Binary if the underlying stream should not translate EOLs to OS specific character sequence. The default value is Text and the underlying stream will be opened in text mode.

Definition at line 117 of file fileappender.h.

## Constructor & Destructor Documentation

## FileAppenderBase() [1/2]

log4cplus::FileAppenderBase::FileAppenderBase | ( | const log4cplus::tstring & | filename,
|  | std::ios_base::openmode | mode = std::ios_base::trunc,
|  | bool | immediateFlush = true,
|  | bool | createDirs = false )

protected

References createDirs, filename, and immediateFlush.

## FileAppenderBase() [2/2]

log4cplus::FileAppenderBase::FileAppenderBase | ( | const log4cplus::helpers::Properties & | properties,
|  | std::ios_base::openmode | mode = std::ios_base::trunc )

protected

## Member Function Documentation

## append()

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

protected virtual

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

See also
  doAppend method.

Implements log4cplus::Appender.

Reimplemented in log4cplus::DailyRollingFileAppender, log4cplus::RollingFileAppender, and log4cplus::TimeBasedRollingFileAppender.

## close()

virtual void log4cplus::FileAppenderBase::close | ( |  | ) |

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.

Implements log4cplus::Appender.

Reimplemented in log4cplus::DailyRollingFileAppender, and log4cplus::TimeBasedRollingFileAppender.

## getloc()

virtual std::locale log4cplus::FileAppenderBase::getloc | ( |  | ) | const

virtual

Returns
  Locale imbued in fstream.

## imbue()

virtual std::locale log4cplus::FileAppenderBase::imbue | ( | std::locale const & | loc | ) |

virtual

Redefine default locale for output stream. It may be a good idea to provide UTF-8 locale in case UNICODE macro is defined.

## init()

void log4cplus::FileAppenderBase::init | ( |  | ) |

protected

## open()

virtual void log4cplus::FileAppenderBase::open | ( | std::ios_base::openmode | mode | ) |

protected virtual

Reimplemented in log4cplus::TimeBasedRollingFileAppender.

## reopen()

bool log4cplus::FileAppenderBase::reopen | ( |  | ) |

protected

## Member Data Documentation

## buffer

std::unique_ptr<log4cplus::tchar[]> log4cplus::FileAppenderBase::buffer

protected

Definition at line 178 of file fileappender.h.

## bufferSize

unsigned long log4cplus::FileAppenderBase::bufferSize

protected

Definition at line 177 of file fileappender.h.

## createDirs

bool log4cplus::FileAppenderBase::createDirs

protected

When this variable is true, FileAppender will try to create missing directories in path leading to log file.

The createDirs variable is set to false by default.

Definition at line 166 of file fileappender.h.

Referenced by log4cplus::DailyRollingFileAppender::DailyRollingFileAppender(), log4cplus::FileAppender::FileAppender(), FileAppenderBase(), log4cplus::RollingFileAppender::RollingFileAppender(), and log4cplus::TimeBasedRollingFileAppender::TimeBasedRollingFileAppender().

## filename

log4cplus::tstring log4cplus::FileAppenderBase::filename

protected

Definition at line 181 of file fileappender.h.

Referenced by log4cplus::DailyRollingFileAppender::DailyRollingFileAppender(), log4cplus::FileAppender::FileAppender(), FileAppenderBase(), log4cplus::RollingFileAppender::RollingFileAppender(), and log4cplus::TimeBasedRollingFileAppender::TimeBasedRollingFileAppender().

## fileOpenMode

std::ios_base::openmode log4cplus::FileAppenderBase::fileOpenMode

protected

Definition at line 184 of file fileappender.h.

## immediateFlush

bool log4cplus::FileAppenderBase::immediateFlush

protected

Immediate flush means that the underlying writer or output stream will be flushed at the end of each append operation.

Immediate flush is slower but ensures that each append request is actually written. If `immediateFlush` is set to `false`, then there is a good chance that the last few logs events are not actually written to persistent media if and when the application crashes.

The `immediateFlush` variable is set to `true` by default.

Definition at line 158 of file fileappender.h.

Referenced by log4cplus::DailyRollingFileAppender::DailyRollingFileAppender(), log4cplus::FileAppender::FileAppender(), FileAppenderBase(), log4cplus::RollingFileAppender::RollingFileAppender(), and log4cplus::TimeBasedRollingFileAppender::TimeBasedRollingFileAppender().

## localeName

log4cplus::tstring log4cplus::FileAppenderBase::localeName

protected

Definition at line 182 of file fileappender.h.

## lockFileName

log4cplus::tstring log4cplus::FileAppenderBase::lockFileName

protected

Definition at line 183 of file fileappender.h.

## out

log4cplus::tofstream log4cplus::FileAppenderBase::out

protected

Definition at line 180 of file fileappender.h.

## reopen_time

log4cplus::helpers::Time log4cplus::FileAppenderBase::reopen_time

protected

Definition at line 186 of file fileappender.h.

## reopenDelay

int log4cplus::FileAppenderBase::reopenDelay

protected

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.

If `reopenDelay` is zero, each failed append operation will cause log file to be re-opened. By default, `reopenDelay` is 1 second.

Definition at line 175 of file fileappender.h.

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

- fileappender.h