log4cplus  2.1.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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. More...
 
virtual void close ()=0
 Release any resources allocated within the appender such as file handles, network connections, etc. More...
 
bool isClosed () const
 Check if this appender is in closed state. More...
 
void syncDoAppend (const log4cplus::spi::InternalLoggingEvent &event)
 This method performs threshold checks and invokes filters before delegating actual logging to the subclasses specific {} method. More...
 
void asyncDoAppend (const log4cplus::spi::InternalLoggingEvent &event)
 This method performs book keeping related to asynchronous logging and executes syncDoAppend() to do the actual logging. More...
 
void doAppend (const log4cplus::spi::InternalLoggingEvent &event)
 This function checks async flag. More...
 
virtual log4cplus::tstring getName ()
 Get the name of this appender. More...
 
virtual void setName (const log4cplus::tstring &name)
 Set the name of this appender. More...
 
virtual void setErrorHandler (std::unique_ptr< ErrorHandler > eh)
 Set the ErrorHandler for this Appender. More...
 
virtual ErrorHandlergetErrorHandler ()
 Return the currently set ErrorHandler for this Appender. More...
 
virtual void setLayout (std::unique_ptr< Layout > layout)
 Set the layout for this appender. More...
 
virtual LayoutgetLayout ()
 Returns the layout of this appender. More...
 
void setFilter (log4cplus::spi::FilterPtr f)
 Set the filter chain on this Appender. More...
 
log4cplus::spi::FilterPtr getFilter () const
 Get the filter chain on this Appender. More...
 
void addFilter (log4cplus::spi::FilterPtr f)
 Add filter at the end of the filters chain. More...
 
void addFilter (std::function< spi::FilterResult(const log4cplus::spi::InternalLoggingEvent &)>)
 Add filter at the end of the filters chain. More...
 
LogLevel getThreshold () const
 Returns this appenders threshold LogLevel. More...
 
void setThreshold (LogLevel th)
 Set the threshold LogLevel. More...
 
bool isAsSevereAsThreshold (LogLevel ll) const
 Check whether the message LogLevel is below the appender's threshold. More...
 
void waitToFinishAsyncLogging ()
 This method waits for all events that are being asynchronously logged to finish. More...
 
- 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. More...
 
tstringformatEvent (const log4cplus::spi::InternalLoggingEvent &event) const
 
- Protected Member Functions inherited from log4cplus::helpers::SharedObject
 SharedObject ()
 
 SharedObject (const SharedObject &)
 
 SharedObject (SharedObject &&)
 
virtual ~SharedObject ()
 
SharedObjectoperator= (const SharedObject &) LOG4CPLUS_NOEXCEPT
 
SharedObjectoperator= (SharedObject &&) LOG4CPLUS_NOEXCEPT
 

Protected Attributes

std::unique_ptr< Layoutlayout
 The layout variable does not need to be set if the appender implementation has its own layout. More...
 
log4cplus::tstring name
 Appenders are named. More...
 
LogLevel threshold
 There is no LogLevel threshold filtering by default. More...
 
log4cplus::spi::FilterPtr filter
 The first filter in the filter chain. More...
 
std::unique_ptr< ErrorHandlererrorHandler
 It is assumed and enforced that errorHandler is never null. More...
 
std::unique_ptr< helpers::LockFilelockFile
 Optional system wide synchronization lock. More...
 
bool useLockFile
 Use lock file for inter-process synchronization of access to log file. More...
 
bool async
 Asynchronous append. More...
 
std::atomic< std::size_t > in_flight
 
std::mutex in_flight_mutex
 
std::condition_variable in_flight_condition
 
bool closed
 Is this appender closed? More...
 

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 ( )

◆ 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)
protectedpure virtual

◆ 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

◆ 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

◆ 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 {} method for the meaning of this option.

Definition at line 255 of file appender.h.

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

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

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

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

◆ 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 {} 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.

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

◆ threshold

LogLevel log4cplus::Appender::threshold
protected

There is no LogLevel threshold filtering by default.


Definition at line 302 of file appender.h.

◆ 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: