Apache Log4cxx: log4cxx::db::ODBCAppender Class Reference (original) (raw)
Public Member Functions
ODBCAppender ()
virtual
void
setOption (const LogString &option, const LogString &value) override
Set option to value.
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
Does this appender require a layout?
void
Set pre-formated statement eg: insert into LogTable (msg) values ("%m")
const LogString &
getSql () const
Returns pre-formated statement eg: insert into LogTable (msg) values ("%m")
void
setUser (const LogString &user)
void
void
setPassword (const LogString &password)
void
setBufferSize (size_t newBufferSize)
const LogString &
getUser () const
const LogString &
getURL () const
const LogString &
getPassword () const
size_t
getBufferSize () const
Public Member Functions inherited from log4cxx::AppenderSkeleton
AppenderSkeleton (const LayoutPtr &layout)
virtual
void
finalize ()
Finalize this appender by calling the derived class' close method.
void
activateOptions (helpers::Pool &) override
Activate the options that were previously set with calls to option setters.
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.
getFilter () const override
Returns the head Filter.
const spi::FilterPtr
getFirstFilter () const
Return the first filter in the filter chain for this Appender.
getLayout () const override
Returns the layout of this appender.
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](classlog4cxx%5F1%5F1spi%5F1%5F1ErrorHandler.html) 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](classlog4cxx%5F1%5F1Appender.html "Implement this interface for your own strategies for outputting log statements.") 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
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::Class &
getClass () const =0
virtual bool
instanceof (const Class &clazz) const =0
virtual const void *
cast (const Class &clazz) const =0
The ODBCAppender sends log events to a database.
Each append call adds the spi::LoggingEvent to a buffer. When the buffer is full, values are extracted from each spi::LoggingEvent and the sql insert statement executed.
The SQL insert statement pattern must be provided either in the Log4cxx configuration file using the sql parameter element or programatically by calling the setSql(String sql) method.
The following param elements are optional:
- one of DSN, URL, ConnectionString - The serverName parameter value in the SQLConnect call.
- User - The UserName parameter value in the SQLConnect call.
- Password - The Authentication parameter value in the SQLConnect call.
- BufferSize - Delay executing the sql until this many logging events are available. One by default, meaning an sql statement is executed whenever a logging event is appended.
- ColumnMapping - One element for each "?" in the sql statement in a sequence corresponding to the columns in the insert statement. The following values are supported:
- logger - the name of the logger that generated the logging event
- level - the level of the logging event
- thread - the thread number as a hex string that generated the logging event
- threadname - the name assigned to the thread that generated the logging event
- time - a datetime or datetime2 SQL field type at which the event was generated
- shortfilename - the basename of the file containing the logging statement
- fullfilename - the path of the file containing the logging statement
- line - the position in the file at which the logging event was generated
- class - the class from which the logging event was generated (1)
- method - the function in which the logging event was generated (1)
- message - the data sent by the logging statement
- mdc - A JSON format string of all entries in the logging thread's mapped diagnostic context
- mdc{key} - the value associated with the key entry in the logging thread's mapped diagnostic context
- ndc - the last entry the logging thread's nested diagnostic context
(1) Only available when the LOG4CXX_* macros are used to issue the logging request.
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
closeConnectionto handle the connection you generated. Typically this would return the connection to the pool it came from.
An example configuration that writes to the data source named "LoggingDSN" is:
<log4j:configuration xmlns:log4j="" title="undefined" rel="noopener noreferrer">http://jakarta.apache.org/log4j/"\>
<appender name="PreparedAppender" class="ODBCAppender">
</appender>
<appender name="ASYNC" class="AsyncAppender">
<appender-ref ref="PreparedAppender"/>
</appender>
<root>
<priority value ="INFO" />
<appender-ref ref="ASYNC" />
</root>
</log4j:configuration>
You may also want to consider the DBAppender class, which uses APR in order to support logging to databases apart from ODBC.