log4cplus
2.0.0
|
Extend this class for implementing your own strategies for printing log statements. More...
#include <appender.h>
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. | |
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 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 |
Use lock file for inter-process synchronization of access to log file. | |
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? |
Extend this class for implementing your own strategies for printing log statements.
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
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. LockFile
UseLockFile
is set to true. Then it is mandatory. Definition at line 132 of file appender.h.
log4cplus::Appender::Appender | ( | const log4cplus::helpers::Properties & | properties | ) |
virtual log4cplus::Appender::~Appender | ( | ) | [virtual] |
Add filter at the end of the filters chain.
void log4cplus::Appender::addFilter | ( | std::function< spi::FilterResult(const log4cplus::spi::InternalLoggingEvent &)> | ) |
Add filter at the end of the filters chain.
virtual void log4cplus::Appender::append | ( | const log4cplus::spi::InternalLoggingEvent & | event | ) | [protected, pure virtual] |
Subclasses of Appender
should implement this method to perform actual logging.
Implemented in log4cplus::DailyRollingFileAppender, log4cplus::RollingFileAppender, log4cplus::DeviceAppender< Device >, log4cplus::FileAppender, log4cplus::SocketAppender, log4cplus::SysLogAppender, log4cplus::MSTTSAppender, log4cplus::Qt4DebugAppender, log4cplus::Qt5DebugAppender, log4cplus::CLFSAppender, log4cplus::Log4jUdpAppender, log4cplus::Win32ConsoleAppender, log4cplus::ConsoleAppender, log4cplus::AsyncAppender, log4cplus::CallbackAppender, log4cplus::NTEventLogAppender, and log4cplus::NullAppender.
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.
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::DailyRollingFileAppender, log4cplus::DeviceAppender< Device >, log4cplus::FileAppender, log4cplus::SocketAppender, log4cplus::SysLogAppender, log4cplus::MSTTSAppender, log4cplus::Qt4DebugAppender, log4cplus::Qt5DebugAppender, log4cplus::CLFSAppender, log4cplus::Log4jUdpAppender, log4cplus::Win32ConsoleAppender, log4cplus::AsyncAppender, log4cplus::ConsoleAppender, log4cplus::NTEventLogAppender, log4cplus::CallbackAppender, and log4cplus::NullAppender.
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.
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.
tstring& log4cplus::Appender::formatEvent | ( | const log4cplus::spi::InternalLoggingEvent & | event | ) | const [protected] |
Referenced by log4cplus::DeviceAppender< Device >::append().
virtual ErrorHandler* log4cplus::Appender::getErrorHandler | ( | ) | [virtual] |
Return the currently set ErrorHandler for this Appender.
Get the filter chain on this Appender.
virtual Layout* log4cplus::Appender::getLayout | ( | ) | [virtual] |
Returns the layout of this appender.
The value may be NULL.
This class owns the returned pointer.
virtual log4cplus::tstring log4cplus::Appender::getName | ( | ) | [virtual] |
Get the name of this appender.
The name uniquely identifies the appender.
LogLevel log4cplus::Appender::getThreshold | ( | ) | const [inline] |
Returns this appenders threshold LogLevel.
See the setThreshold method for the meaning of this option.
Definition at line 250 of file appender.h.
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 267 of file appender.h.
References log4cplus::NOT_SET_LOG_LEVEL.
bool log4cplus::Appender::isClosed | ( | ) | const |
Check if this appender is in closed state.
virtual void log4cplus::Appender::setErrorHandler | ( | std::unique_ptr< ErrorHandler > | eh | ) | [virtual] |
Set the ErrorHandler for this Appender.
Set the filter chain on this Appender.
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.
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.
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 260 of file appender.h.
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.
This method waits for all events that are being asynchronously logged to finish.
bool log4cplus::Appender::async [protected] |
Asynchronous append.
Definition at line 314 of file appender.h.
bool log4cplus::Appender::closed [protected] |
Is this appender closed?
Definition at line 322 of file appender.h.
std::unique_ptr<ErrorHandler> log4cplus::Appender::errorHandler [protected] |
It is assumed and enforced that errorHandler is never null.
Definition at line 304 of file appender.h.
log4cplus::spi::FilterPtr log4cplus::Appender::filter [protected] |
The first filter in the filter chain.
Set to null
initially.
Definition at line 301 of file appender.h.
std::atomic<std::size_t> log4cplus::Appender::in_flight [protected] |
Definition at line 316 of file appender.h.
std::condition_variable log4cplus::Appender::in_flight_condition [protected] |
Definition at line 318 of file appender.h.
std::mutex log4cplus::Appender::in_flight_mutex [protected] |
Definition at line 317 of file appender.h.
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 291 of file appender.h.
std::unique_ptr<helpers::LockFile> log4cplus::Appender::lockFile [protected] |
Optional system wide synchronization lock.
Definition at line 307 of file appender.h.
log4cplus::tstring log4cplus::Appender::name [protected] |
Appenders are named.
Definition at line 294 of file appender.h.
LogLevel log4cplus::Appender::threshold [protected] |
There is no LogLevel threshold filtering by default.
Definition at line 297 of file appender.h.
bool log4cplus::Appender::useLockFile [protected] |
Use lock file for inter-process synchronization of access to log file.
Definition at line 311 of file appender.h.