Apache Log4cxx Version 1.0.0
Loading...
Searching...
No Matches
log4cxx::db::ODBCAppender Class Reference

#include <odbcappender.h>

Inheritance diagram for log4cxx::db::ODBCAppender:
log4cxx::AppenderSkeleton log4cxx::Appender log4cxx::helpers::Object log4cxx::spi::OptionHandler log4cxx::helpers::Object

Public Types

typedef void * SQLHDBC
 
typedef void * SQLHENV
 
typedef void * SQLHANDLE
 
typedef short SQLSMALLINT
 

Public Member Functions

 ODBCAppender ()
 
virtual ~ODBCAppender ()
 
void setOption (const LogString &option, const LogString &value) override
 Set options.
 
void activateOptions (helpers::Pool &p) override
 Activate the specified options.
 
void append (const spi::LoggingEventPtr &event, helpers::Pool &) override
 Adds the event to the buffer.
 
void close () override
 Closes the appender, flushing the buffer first then closing the default connection if it is open.
 
virtual void flushBuffer (log4cxx::helpers::Pool &p)
 loops through the buffer of LoggingEvents, gets a sql string from getLogStatement() and sends it to execute().
 
bool requiresLayout () const override
 ODBCAppender requires a layout.
 
void setSql (const LogString &s)
 Set pre-formated statement eg: insert into LogTable (msg) values ("%m")
 
const LogStringgetSql () const
 Returns pre-formated statement eg: insert into LogTable (msg) values ("%m")
 
void setUser (const LogString &user)
 
void setURL (const LogString &url)
 
void setPassword (const LogString &password)
 
void setBufferSize (size_t newBufferSize)
 
const LogStringgetUser () const
 
const LogStringgetURL () const
 
const LogStringgetPassword () const
 
size_t getBufferSize () const
 
- Public Member Functions inherited from log4cxx::AppenderSkeleton
 AppenderSkeleton ()
 
 AppenderSkeleton (const LayoutPtr &layout)
 
virtual ~AppenderSkeleton ()
 
void finalize ()
 Finalize this appender by calling the derived class' close method.
 
void activateOptions (helpers::Pool &) override
 Derived appenders should override this method if option structure requires it.
 
void setOption (const LogString &option, const LogString &value) override
 Set option to value.
 
void addFilter (const spi::FilterPtr newFilter) override
 Add a filter to end of the filter list.
 
void clearFilters () override
 Clear the filters chain.
 
const spi::ErrorHandlerPtr getErrorHandler () const
 Return the currently set spi::ErrorHandler for this Appender.
 
spi::FilterPtr getFilter () const override
 Returns the head Filter.
 
const spi::FilterPtr getFirstFilter () const
 Return the first filter in the filter chain for this Appender.
 
LayoutPtr getLayout () const override
 Returns the layout of this appender.
 
LogString getName () const override
 Returns the name of this Appender.
 
const LevelPtr getThreshold () const
 Returns this appenders threshold level.
 
bool isAsSevereAsThreshold (const LevelPtr &level) const
 Check whether the message level is below the appender's threshold.
 
void doAppend (const spi::LoggingEventPtr &event, helpers::Pool &pool) override
 This method performs threshold checks and invokes filters before delegating actual logging to the subclasses specific AppenderSkeleton::append method.
 
void setErrorHandler (const spi::ErrorHandlerPtr eh)
 Set the ErrorHandler for this Appender.
 
void setLayout (const LayoutPtr layout1) override
 Set the layout for this appender.
 
void setName (const LogString &name1) override
 Set the name of this Appender.
 
void setThreshold (const LevelPtr &threshold)
 Set the threshold level.
 
- Public Member Functions inherited from log4cxx::Appender
virtual ~Appender ()
 
virtual void addFilter (const spi::FilterPtr newFilter)=0
 Add a filter to the end of the filter list.
 
virtual spi::FilterPtr getFilter () const =0
 Returns the head Filter.
 
virtual void clearFilters ()=0
 Clear the list of filters by removing all the filters in it.
 
virtual void close ()=0
 Release any resources allocated within the appender such as file handles, network connections, etc.
 
virtual void doAppend (const spi::LoggingEventPtr &event, log4cxx::helpers::Pool &pool)=0
 Log in Appender specific way.
 
virtual LogString getName () const =0
 Get the name of this appender.
 
virtual void setLayout (const LayoutPtr layout)=0
 Set the Layout for this appender.
 
virtual LayoutPtr getLayout () const =0
 Returns this appenders layout.
 
virtual void setName (const LogString &name)=0
 Set the name of this appender.
 
virtual bool requiresLayout () const =0
 Configurators call this method to determine if the appender requires a layout.
 
- Public Member Functions inherited from log4cxx::spi::OptionHandler
virtual ~OptionHandler ()
 
virtual void activateOptions (helpers::Pool &p)=0
 Activate the options that were previously set with calls to option setters.
 
virtual void setOption (const LogString &option, const LogString &value)=0
 Set option to value.
 
- Public Member Functions inherited from log4cxx::helpers::Object
virtual ~Object ()
 
virtual const helpers::ClassgetClass () const =0
 
virtual bool instanceof (const Class &clazz) const =0
 
virtual const void * cast (const Class &clazz) const =0
 

Protected Member Functions

LogString getLogStatement (const spi::LoggingEventPtr &event, helpers::Pool &p) const
 By default getLogStatement sends the event to the required Layout object.
 
virtual void execute (const LogString &sql, log4cxx::helpers::Pool &p)
 Override this to provide an alertnate method of getting connections (such as caching).
 
virtual void closeConnection (SQLHDBC con)
 Override this to return the connection to a pool, or to clean up the resource.
 
virtual SQLHDBC getConnection (log4cxx::helpers::Pool &p)
 Override this to link with your connection pooling system.
 
- Protected Member Functions inherited from log4cxx::AppenderSkeleton
 AppenderSkeleton (LOG4CXX_PRIVATE_PTR(AppenderSkeletonPrivate) priv)
 
virtual void append (const spi::LoggingEventPtr &event, log4cxx::helpers::Pool &p)=0
 Subclasses of AppenderSkeleton should implement this method to perform actual logging.
 
void doAppendImpl (const spi::LoggingEventPtr &event, log4cxx::helpers::Pool &pool)
 

Detailed Description

WARNING: This version of ODBCAppender is very likely to be completely replaced in the future. Moreoever, it does not log exceptions.

The ODBCAppender provides for sending log events to a database.

Each append call adds to an ArrayList buffer. When the buffer is filled each log event is placed in a sql statement (configurable) and executed.

BufferSize, db URL, User, & Password are configurable options in the standard log4j ways.

The setSql(String sql) sets the SQL statement to be used for logging – this statement is sent to a PatternLayout (either created automaticly by the appender or added by the user). Therefore by default all the conversion patterns in PatternLayout can be used inside of the statement. (see the test cases for examples)

Overriding the getLogStatement method allows more explicit control of the statement used for logging.

For use as a base class:

  • Override getConnection() to pass any connection you want. Typically this is used to enable application wide connection pooling.

  • Override closeConnection – if you override getConnection make sure to implement closeConnection to handle the connection you generated. Typically this would return the connection to the pool it came from.

  • Override getLogStatement to produce specialized or dynamic statements. The default uses the sql option value.

Member Typedef Documentation

◆ SQLHANDLE

◆ SQLHDBC

◆ SQLHENV

◆ SQLSMALLINT

Constructor & Destructor Documentation

◆ ODBCAppender()

log4cxx::db::ODBCAppender::ODBCAppender ( )

◆ ~ODBCAppender()

virtual log4cxx::db::ODBCAppender::~ODBCAppender ( )
virtual

Member Function Documentation

◆ activateOptions()

void log4cxx::db::ODBCAppender::activateOptions ( helpers::Pool p)
overridevirtual

Activate the specified options.

Reimplemented from log4cxx::AppenderSkeleton.

◆ append()

void log4cxx::db::ODBCAppender::append ( const spi::LoggingEventPtr event,
helpers::Pool  
)
overridevirtual

Adds the event to the buffer.

When full the buffer is flushed.

Implements log4cxx::AppenderSkeleton.

◆ close()

void log4cxx::db::ODBCAppender::close ( )
overridevirtual

Closes the appender, flushing the buffer first then closing the default connection if it is open.

Implements log4cxx::Appender.

◆ closeConnection()

virtual void log4cxx::db::ODBCAppender::closeConnection ( SQLHDBC  con)
protectedvirtual

Override this to return the connection to a pool, or to clean up the resource.

The default behavior holds a single connection open until the appender is closed (typically when garbage collected).

◆ execute()

virtual void log4cxx::db::ODBCAppender::execute ( const LogString sql,
log4cxx::helpers::Pool p 
)
protectedvirtual

Override this to provide an alertnate method of getting connections (such as caching).

One method to fix this is to open connections at the start of flushBuffer() and close them at the end. I use a connection pool outside of ODBCAppender which is accessed in an override of this method.

◆ flushBuffer()

virtual void log4cxx::db::ODBCAppender::flushBuffer ( log4cxx::helpers::Pool p)
virtual

loops through the buffer of LoggingEvents, gets a sql string from getLogStatement() and sends it to execute().

Errors are sent to the errorHandler.

If a statement fails the LoggingEvent stays in the buffer!

◆ getBufferSize()

size_t log4cxx::db::ODBCAppender::getBufferSize ( ) const

◆ getConnection()

virtual SQLHDBC log4cxx::db::ODBCAppender::getConnection ( log4cxx::helpers::Pool p)
protectedvirtual

Override this to link with your connection pooling system.

By default this creates a single connection which is held open until the object is garbage collected.

◆ getLogStatement()

LogString log4cxx::db::ODBCAppender::getLogStatement ( const spi::LoggingEventPtr event,
helpers::Pool p 
) const
protected

By default getLogStatement sends the event to the required Layout object.

The layout will format the given pattern into a workable SQL string.

Overriding this provides direct access to the LoggingEvent when constructing the logging statement.

◆ getPassword()

const LogString & log4cxx::db::ODBCAppender::getPassword ( ) const

◆ getSql()

const LogString & log4cxx::db::ODBCAppender::getSql ( ) const

Returns pre-formated statement eg: insert into LogTable (msg) values ("%m")

◆ getURL()

const LogString & log4cxx::db::ODBCAppender::getURL ( ) const

◆ getUser()

const LogString & log4cxx::db::ODBCAppender::getUser ( ) const

◆ requiresLayout()

bool log4cxx::db::ODBCAppender::requiresLayout ( ) const
inlineoverridevirtual

ODBCAppender requires a layout.

Implements log4cxx::Appender.

◆ setBufferSize()

void log4cxx::db::ODBCAppender::setBufferSize ( size_t  newBufferSize)

◆ setOption()

void log4cxx::db::ODBCAppender::setOption ( const LogString option,
const LogString value 
)
overridevirtual

Set options.

Reimplemented from log4cxx::AppenderSkeleton.

◆ setPassword()

void log4cxx::db::ODBCAppender::setPassword ( const LogString password)

◆ setSql()

void log4cxx::db::ODBCAppender::setSql ( const LogString s)

Set pre-formated statement eg: insert into LogTable (msg) values ("%m")

◆ setURL()

void log4cxx::db::ODBCAppender::setURL ( const LogString url)

◆ setUser()

void log4cxx::db::ODBCAppender::setUser ( const LogString user)

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