Class DBAppender
- java.lang.Object
-
- org.apache.log4j.AppenderSkeleton
-
- org.apache.log4j.db.DBAppender
-
- All Implemented Interfaces:
org.apache.log4j.Appender
,org.apache.log4j.spi.OptionHandler
,org.apache.log4j.xml.UnrecognizedElementHandler
public class DBAppender extends org.apache.log4j.AppenderSkeleton implements org.apache.log4j.xml.UnrecognizedElementHandler
The DBAppender inserts loggin events into three database tables in a format independent of the Java programming language. The three tables that DBAppender inserts to must exists before DBAppender can be used. These tables may be created with the help of SQL scripts found in the src/java/org/apache/log4j/db/dialect directory. There is a specific script for each of the most popular database systems. If the script for your particular type of database system is missing, it should be quite easy to write one, taking example on the already existing scripts. If you send them to us, we will gladly include missing scripts in future releases.If the JDBC driver you are using supports the
Statement.getGeneratedKeys()
method introduced in JDBC 3.0 specification, then you are all set. Otherwise, there must be anSQLDialect
appropriate for your database system. Currently, we have dialects for PostgreSQL, MySQL, Oracle and MsSQL. As mentioed previously, an SQLDialect is required only if the JDBC driver for your database system does not support thegetGeneratedKeys
method.supported dialects RDBMS supports getGeneratedKeys()
methodspecific
SQLDialect supportPostgreSQL NO present and used MySQL YES present, but not actually needed or used Oracle YES present, but not actually needed or used DB2 YES not present, and not needed or used MsSQL YES not present, and not needed or used HSQL NO present and used Performance: Experiments show that writing a single event into the database takes approximately 50 milliseconds, on a "standard" PC. If pooled connections are used, this figure drops to under 10 milliseconds. Note that most JDBC drivers already ship with connection pooling support.
Configuration DBAppender can be configured programmatically, or using
JoranConfigurator
. Example scripts can be found in the tests/input/db directory.- Author:
- Ceki Gülcü, Ray DeCampo
-
-
Constructor Summary
Constructors Constructor Description DBAppender()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activateOptions()
protected void
append(org.apache.log4j.spi.LoggingEvent event)
void
close()
ConnectionSource
getConnectionSource()
boolean
getLocationInfo()
Returns value of the LocationInfo property which determines whether caller's location info is written to the database.boolean
parseUnrecognizedElement(Element element, Properties props)
boolean
requiresLayout()
Gets whether appender requires a layout.void
setConnectionSource(ConnectionSource connectionSource)
void
setLocationInfo(boolean locationInfo)
If true, the information written to the database will include caller's location information.
-
-
-
Method Detail
-
activateOptions
public void activateOptions()
- Specified by:
activateOptions
in interfaceorg.apache.log4j.spi.OptionHandler
- Overrides:
activateOptions
in classorg.apache.log4j.AppenderSkeleton
-
getConnectionSource
public ConnectionSource getConnectionSource()
- Returns:
- Returns the connectionSource.
-
setConnectionSource
public void setConnectionSource(ConnectionSource connectionSource)
- Parameters:
connectionSource
- The connectionSource to set.
-
append
protected void append(org.apache.log4j.spi.LoggingEvent event)
- Specified by:
append
in classorg.apache.log4j.AppenderSkeleton
-
close
public void close()
- Specified by:
close
in interfaceorg.apache.log4j.Appender
-
getLocationInfo
public boolean getLocationInfo()
Returns value of the LocationInfo property which determines whether caller's location info is written to the database.
-
setLocationInfo
public void setLocationInfo(boolean locationInfo)
If true, the information written to the database will include caller's location information. Due to performance concerns, by default no location information is written to the database.
-
requiresLayout
public boolean requiresLayout()
Gets whether appender requires a layout.- Specified by:
requiresLayout
in interfaceorg.apache.log4j.Appender
- Returns:
- false
-
parseUnrecognizedElement
public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception
- Specified by:
parseUnrecognizedElement
in interfaceorg.apache.log4j.xml.UnrecognizedElementHandler
- Throws:
Exception
-
-