org.apache.log4j.db

## 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 an `SQLDialect`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 the `getGeneratedKeys` method.

  supported dialects
  RDBMS | supports `getGeneratedKeys()` method | specific SQLDialect support
  --- | --- | ---
  PostgreSQL | 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

- - ### Field Summary

    - ### Fields inherited from class org.apache.log4j.AppenderSkeleton

      `closed, errorHandler, headFilter, layout, name, tailFilter, threshold`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DBAppender()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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.

    - ### Methods inherited from class org.apache.log4j.AppenderSkeleton

      `addFilter, clearFilters, doAppend, finalize, getErrorHandler, getFilter, getFirstFilter, getLayout, getName, getThreshold, isAsSevereAsThreshold, setErrorHandler, setLayout, setName, setThreshold`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DBAppender

          public DBAppender()

  - ### Method Detail

    - #### activateOptions

          public void activateOptions()

      Specified by:
        `activateOptions` in interface `org.apache.log4j.spi.OptionHandler`
      Overrides:
        `activateOptions` in class `org.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 class `org.apache.log4j.AppenderSkeleton`

    - #### close

          public void close()

      Specified by:
        `close` in interface `org.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 interface `org.apache.log4j.Appender`
      Returns:
        false

    - #### parseUnrecognizedElement

          public boolean parseUnrecognizedElement(Element element,
                                                  Properties props)
                                           throws Exception

      Specified by:
        `parseUnrecognizedElement` in interface `org.apache.log4j.xml.UnrecognizedElementHandler`
      Throws:
        `Exception`

Copyright © 2002-2018 Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache Chainsaw, Chainsaw, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.