log4cplus::Appender Class Referenceabstract

Extend this class for implementing your own strategies for printing log statements. More...

`#include <appender.h>`

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

## Public Member Functions

| Appender ()
| Appender (const log4cplus::helpers::Properties &properties)
virtual | ~Appender ()
void | destructorImpl ()
| This function is for derived appenders to call from their destructors.
virtual void | close ()=0
| Release any resources allocated within the appender such as file handles, network connections, etc.
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

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

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

Extend this class for implementing your own strategies for printing log statements.

### Properties

layout
  This property specifies message layout used by Appender.
  See also
    Layout
filters

  This property specifies possibly multiple filters used by Appender. Each of multple filters and its properties is under a numbered subkey of filters key. E.g.: filters.1=log4cplus::spi::LogLevelMatchFilter. Filter subkey numbers must be consecutive.

Threshold

  This property specifies log level threshold. Events with lower log level than the threshold will not be logged by appender.

UseLockFile
  Set this property to true if you want your output through this appender to be synchronized between multiple processes. When this property is set to true then log4cplus uses OS specific facilities (e.g., `lockf()`) to provide inter-process locking. With the exception of FileAppender and its derived classes, it is also necessary to provide path to a lock file using the LockFile property.
  See also
    FileAppender
LockFile
  This property specifies lock file, file used for inter-process synchronization of log file access. The property is only used when UseLockFile is set to true. Then it is mandatory.
  See also
    FileAppender
AsyncAppend

  Set this property to true if you want all appends using this appender to be done asynchronously. Default is false.

Definition at line 137 of file appender.h.

## Constructor & Destructor Documentation

## Appender() [1/2]

log4cplus::Appender::Appender | ( |  | ) |

Referenced by log4cplus::DeviceAppender< Device >::DeviceAppender(), and log4cplus::DeviceAppender< Device >::DeviceAppender().

## Appender() [2/2]

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

## ~Appender()

virtual log4cplus::Appender::~Appender | ( |  | ) |

virtual

## Member Function Documentation

## addFilter() [1/2]

void log4cplus::Appender::addFilter | ( | log4cplus::spi::FilterPtr | f | ) |

Add filter at the end of the filters chain.

## addFilter() [2/2]

void log4cplus::Appender::addFilter | ( | std::function< spi::FilterResult(const log4cplus::spi::InternalLoggingEvent &)> |  | ) |

Add filter at the end of the filters chain.

## append()

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

protected pure virtual

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

See also
  doAppend method.

Implemented in log4cplus::AsyncAppender, log4cplus::CallbackAppender, log4cplus::CLFSAppender, log4cplus::ConsoleAppender, log4cplus::DailyRollingFileAppender, log4cplus::DeviceAppender< Device >, log4cplus::FileAppenderBase, log4cplus::Log4jUdpAppender, log4cplus::MSTTSAppender, log4cplus::NTEventLogAppender, log4cplus::NullAppender, log4cplus::Qt4DebugAppender, log4cplus::Qt5DebugAppender, log4cplus::RollingFileAppender, log4cplus::SocketAppender, log4cplus::SysLogAppender, log4cplus::TimeBasedRollingFileAppender, and log4cplus::Win32ConsoleAppender.

## asyncDoAppend()

void log4cplus::Appender::asyncDoAppend | ( | const log4cplus::spi::InternalLoggingEvent & | event | ) |

This method performs book keeping related to asynchronous logging and executes syncDoAppend() to do the actual logging.

## close()

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

pure 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.

Implemented in log4cplus::AsyncAppender, log4cplus::CallbackAppender, log4cplus::CLFSAppender, log4cplus::ConsoleAppender, log4cplus::DailyRollingFileAppender, log4cplus::DeviceAppender< Device >, log4cplus::FileAppenderBase, log4cplus::Log4jUdpAppender, log4cplus::MSTTSAppender, log4cplus::NTEventLogAppender, log4cplus::NullAppender, log4cplus::Qt4DebugAppender, log4cplus::Qt5DebugAppender, log4cplus::SocketAppender, log4cplus::SysLogAppender, log4cplus::TimeBasedRollingFileAppender, and log4cplus::Win32ConsoleAppender.

## destructorImpl()

void log4cplus::Appender::destructorImpl | ( |  | ) |

This function is for derived appenders to call from their destructors.

All classes derived from Appender class must call this function from their destructors. It ensures that appenders will get properly closed during shutdown by call to close() function before they are destroyed.

## doAppend()

void log4cplus::Appender::doAppend | ( | const log4cplus::spi::InternalLoggingEvent & | event | ) |

This function checks async flag.

It either executes syncDoAppend() directly or enqueues its execution to thread pool thread.

## formatEvent()

tstring & log4cplus::Appender::formatEvent | ( | const log4cplus::spi::InternalLoggingEvent & | event | ) | const

protected

Referenced by log4cplus::DeviceAppender< Device >::append().

## getErrorHandler()

virtual ErrorHandler * log4cplus::Appender::getErrorHandler | ( |  | ) |

virtual

Return the currently set `ErrorHandler` for this Appender.

## getFilter()

log4cplus::spi::FilterPtr log4cplus::Appender::getFilter | ( |  | ) | const

Get the filter chain on this Appender.

## getLayout()

virtual Layout * log4cplus::Appender::getLayout | ( |  | ) |

virtual

Returns the layout of this appender.

The value may be NULL.

This class owns the returned pointer.

## getName()

virtual log4cplus::tstring log4cplus::Appender::getName | ( |  | ) |

virtual

Get the name of this appender.

The name uniquely identifies the appender.

## getThreshold()

LogLevel log4cplus::Appender::getThreshold | ( |  | ) | const

inline

Returns this appenders threshold LogLevel.

See the `setThreshold` method for the meaning of this option.

Definition at line 255 of file appender.h.

References threshold.

## isAsSevereAsThreshold()

bool log4cplus::Appender::isAsSevereAsThreshold | ( | LogLevel | ll | ) | const

inline

Check whether the message LogLevel is below the appender's threshold.

If there is no threshold set, then the return value is always `true`.

Definition at line 272 of file appender.h.

References log4cplus::NOT_SET_LOG_LEVEL, and threshold.

## isClosed()

bool log4cplus::Appender::isClosed | ( |  | ) | const

Check if this appender is in closed state.

## setErrorHandler()

virtual void log4cplus::Appender::setErrorHandler | ( | std::unique_ptr< ErrorHandler > | eh | ) |

virtual

Set the `ErrorHandler` for this Appender.

## setFilter()

void log4cplus::Appender::setFilter | ( | log4cplus::spi::FilterPtr | f | ) |

Set the filter chain on this Appender.

## setLayout()

virtual void log4cplus::Appender::setLayout | ( | std::unique_ptr< Layout > | layout | ) |

virtual

Set the layout for this appender.

Note that some appenders have their own (fixed) layouts or do not use one. For example, the SocketAppender ignores the layout set here.

References layout.

## setName()

virtual void log4cplus::Appender::setName | ( | const log4cplus::tstring & | name | ) |

virtual

Set the name of this appender.

The name is used by other components to identify this appender.

References name.

## setThreshold()

void log4cplus::Appender::setThreshold | ( | LogLevel | th | ) |

inline

Set the threshold LogLevel.

All log events with lower LogLevel than the threshold LogLevel are ignored by the appender.

In configuration files this option is specified by setting the value of the Threshold option to a LogLevel string, such as "DEBUG", "INFO" and so on.

Definition at line 265 of file appender.h.

References threshold.

## syncDoAppend()

void log4cplus::Appender::syncDoAppend | ( | const log4cplus::spi::InternalLoggingEvent & | event | ) |

This method performs threshold checks and invokes filters before delegating actual logging to the subclasses specific `append` method.

## waitToFinishAsyncLogging()

void log4cplus::Appender::waitToFinishAsyncLogging | ( |  | ) |

This method waits for all events that are being asynchronously logged to finish.

## Member Data Documentation

## async

bool log4cplus::Appender::async

protected

Asynchronous append.

Definition at line 319 of file appender.h.

## closed

bool log4cplus::Appender::closed

protected

Is this appender closed?

Definition at line 327 of file appender.h.

## errorHandler

std::unique_ptr<ErrorHandler> log4cplus::Appender::errorHandler

protected

It is assumed and enforced that errorHandler is never null.

Definition at line 309 of file appender.h.

## filter

log4cplus::spi::FilterPtr log4cplus::Appender::filter

protected

The first filter in the filter chain.

Set to `null` initially.

Definition at line 306 of file appender.h.

## in_flight

std::atomic<std::size_t> log4cplus::Appender::in_flight

protected

Definition at line 321 of file appender.h.

## in_flight_condition

std::condition_variable log4cplus::Appender::in_flight_condition

protected

Definition at line 323 of file appender.h.

## in_flight_mutex

std::mutex log4cplus::Appender::in_flight_mutex

protected

Definition at line 322 of file appender.h.

## layout

std::unique_ptr<Layout> log4cplus::Appender::layout

protected

The layout variable does not need to be set if the appender implementation has its own layout.

Definition at line 296 of file appender.h.

Referenced by setLayout().

## lockFile

std::unique_ptr<helpers::LockFile> log4cplus::Appender::lockFile

protected

Optional system wide synchronization lock.

Definition at line 312 of file appender.h.

## name

log4cplus::tstring log4cplus::Appender::name

protected

Appenders are named.

Definition at line 299 of file appender.h.

Referenced by setName().

## threshold

LogLevel log4cplus::Appender::threshold

protected

There is no LogLevel threshold filtering by default.

Definition at line 302 of file appender.h.

Referenced by getThreshold(), isAsSevereAsThreshold(), and setThreshold().

## useLockFile

bool log4cplus::Appender::useLockFile

protected

Use lock file for inter-process synchronization of access to log file.

Definition at line 316 of file appender.h.

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

- appender.h