blob: 32ff7911caa110005d7b62fb5942f67f40e9e802 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (version 1.7.0_25) on Mon Oct 14 12:35:24 CEST 2013 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>DBAppender (Apache Extras™ for Apache log4j™. 1.2.17 API)</title>
<meta name="date" content="2013-10-14">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="DBAppender (Apache Extras™ for Apache log4j™. 1.2.17 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DBAppender.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../org/apache/log4j/LoggerRepositoryExImpl.html" title="class in org.apache.log4j"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/log4j/DBAppender.html" target="_top">Frames</a></li>
<li><a href="DBAppender.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_org.apache.log4j.AppenderSkeleton">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.log4j</div>
<h2 title="Class DBAppender" class="title">Class DBAppender</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.log4j.AppenderSkeleton</li>
<li>
<ul class="inheritance">
<li>org.apache.log4j.DBAppender</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>org.apache.log4j.Appender, org.apache.log4j.spi.OptionHandler, org.apache.log4j.xml.UnrecognizedElementHandler</dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">DBAppender</span>
extends org.apache.log4j.AppenderSkeleton
implements org.apache.log4j.xml.UnrecognizedElementHandler</pre>
<div class="block">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
<em>src/java/org/apache/log4j/db/dialect</em> 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.
<p>
If the JDBC driver you are using supports the
<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html?is-external=true#getGeneratedKeys()" title="class or interface in java.sql"><code>Statement.getGeneratedKeys()</code></a>method introduced in JDBC 3.0
specification, then you are all set. Otherwise, there must be an
<a href="../../../org/apache/log4j/receivers/db/dialect/SQLDialect.html" title="interface in org.apache.log4j.receivers.db.dialect"><code>SQLDialect</code></a>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 <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html?is-external=true#getGeneratedKeys()" title="class or interface in java.sql"><code>getGeneratedKeys</code></a>
method.
</p>
<table border="1" cellpadding="4">
<tr>
<th>RDBMS</th>
<th>supports <br/><code>getGeneratedKeys()</code> method</th>
<th>specific <br/>SQLDialect support</th>
<tr>
<tr>
<td>PostgreSQL</td>
<td align="center">NO</td>
<td>present and used</td>
<tr>
<tr>
<td>MySQL</td>
<td align="center">YES</td>
<td>present, but not actually needed or used</td>
<tr>
<tr>
<td>Oracle</td>
<td align="center">YES</td>
<td>present, but not actually needed or used</td>
<tr>
<tr>
<td>DB2</td>
<td align="center">YES</td>
<td>not present, and not needed or used</td>
<tr>
<tr>
<td>MsSQL</td>
<td align="center">YES</td>
<td>not present, and not needed or used</td>
<tr>
<tr>
<td>HSQL</td>
<td align="center">NO</td>
<td>present and used</td>
<tr>
</table>
<p>
<b>Performance: </b> 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.
</p>
<p>
<b>Configuration </b> DBAppender can be configured programmatically, or using
<code>JoranConfigurator</code>. Example
scripts can be found in the <em>tests/input/db</em> directory.</div>
<dl><dt><span class="strong">Author:</span></dt>
<dd>Ceki G&uuml;lc&uuml;, Ray DeCampo</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_org.apache.log4j.AppenderSkeleton">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.log4j.AppenderSkeleton</h3>
<code>closed, errorHandler, headFilter, layout, name, tailFilter, threshold</code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#DBAppender()">DBAppender</a></strong>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#activateOptions()">activateOptions</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#append(org.apache.log4j.spi.LoggingEvent)">append</a></strong>(org.apache.log4j.spi.LoggingEvent&nbsp;event)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#close()">close</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/log4j/receivers/db/ConnectionSource.html" title="interface in org.apache.log4j.receivers.db">ConnectionSource</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#getConnectionSource()">getConnectionSource</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#getLocationInfo()">getLocationInfo</a></strong>()</code>
<div class="block">Returns value of the <b>LocationInfo </b> property which determines whether
caller's location info is written to the database.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#parseUnrecognizedElement(org.w3c.dom.Element, java.util.Properties)">parseUnrecognizedElement</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Element.html?is-external=true" title="class or interface in org.w3c.dom">Element</a>&nbsp;element,
<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;props)</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#requiresLayout()">requiresLayout</a></strong>()</code>
<div class="block">Gets whether appender requires a layout.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#setConnectionSource(org.apache.log4j.receivers.db.ConnectionSource)">setConnectionSource</a></strong>(<a href="../../../org/apache/log4j/receivers/db/ConnectionSource.html" title="interface in org.apache.log4j.receivers.db">ConnectionSource</a>&nbsp;connectionSource)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/log4j/DBAppender.html#setLocationInfo(boolean)">setLocationInfo</a></strong>(boolean&nbsp;locationInfo)</code>
<div class="block">If true, the information written to the database will include caller's
location information.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.log4j.AppenderSkeleton">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.log4j.AppenderSkeleton</h3>
<code>addFilter, clearFilters, doAppend, finalize, getErrorHandler, getFilter, getFirstFilter, getLayout, getName, getThreshold, isAsSevereAsThreshold, setErrorHandler, setLayout, setName, setThreshold</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="DBAppender()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DBAppender</h4>
<pre>public&nbsp;DBAppender()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="activateOptions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>activateOptions</h4>
<pre>public&nbsp;void&nbsp;activateOptions()</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code>activateOptions</code>&nbsp;in interface&nbsp;<code>org.apache.log4j.spi.OptionHandler</code></dd>
<dt><strong>Overrides:</strong></dt>
<dd><code>activateOptions</code>&nbsp;in class&nbsp;<code>org.apache.log4j.AppenderSkeleton</code></dd>
</dl>
</li>
</ul>
<a name="getConnectionSource()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnectionSource</h4>
<pre>public&nbsp;<a href="../../../org/apache/log4j/receivers/db/ConnectionSource.html" title="interface in org.apache.log4j.receivers.db">ConnectionSource</a>&nbsp;getConnectionSource()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>Returns the connectionSource.</dd></dl>
</li>
</ul>
<a name="setConnectionSource(org.apache.log4j.receivers.db.ConnectionSource)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setConnectionSource</h4>
<pre>public&nbsp;void&nbsp;setConnectionSource(<a href="../../../org/apache/log4j/receivers/db/ConnectionSource.html" title="interface in org.apache.log4j.receivers.db">ConnectionSource</a>&nbsp;connectionSource)</pre>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>connectionSource</code> - The connectionSource to set.</dd></dl>
</li>
</ul>
<a name="append(org.apache.log4j.spi.LoggingEvent)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>append</h4>
<pre>protected&nbsp;void&nbsp;append(org.apache.log4j.spi.LoggingEvent&nbsp;event)</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code>append</code>&nbsp;in class&nbsp;<code>org.apache.log4j.AppenderSkeleton</code></dd>
</dl>
</li>
</ul>
<a name="close()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>org.apache.log4j.Appender</code></dd>
</dl>
</li>
</ul>
<a name="getLocationInfo()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocationInfo</h4>
<pre>public&nbsp;boolean&nbsp;getLocationInfo()</pre>
<div class="block">Returns value of the <b>LocationInfo </b> property which determines whether
caller's location info is written to the database.</div>
</li>
</ul>
<a name="setLocationInfo(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLocationInfo</h4>
<pre>public&nbsp;void&nbsp;setLocationInfo(boolean&nbsp;locationInfo)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="requiresLayout()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresLayout</h4>
<pre>public&nbsp;boolean&nbsp;requiresLayout()</pre>
<div class="block">Gets whether appender requires a layout.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code>requiresLayout</code>&nbsp;in interface&nbsp;<code>org.apache.log4j.Appender</code></dd>
<dt><span class="strong">Returns:</span></dt><dd>false</dd></dl>
</li>
</ul>
<a name="parseUnrecognizedElement(org.w3c.dom.Element, java.util.Properties)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>parseUnrecognizedElement</h4>
<pre>public&nbsp;boolean&nbsp;parseUnrecognizedElement(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Element.html?is-external=true" title="class or interface in org.w3c.dom">Element</a>&nbsp;element,
<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;props)
throws <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code>parseUnrecognizedElement</code>&nbsp;in interface&nbsp;<code>org.apache.log4j.xml.UnrecognizedElementHandler</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DBAppender.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../org/apache/log4j/LoggerRepositoryExImpl.html" title="class in org.apache.log4j"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/log4j/DBAppender.html" target="_top">Frames</a></li>
<li><a href="DBAppender.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_org.apache.log4j.AppenderSkeleton">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><p>Copyright © 2013 The Apache Software Foundation. Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p> <p>Apache Extras for Apache log4j, Apache log4j and Apache are trademarks of the Apache Software Foundation.</p></small></p>
</body>
</html>