[logback-dev] svn commit: r884 - logback/trunk/logback-site/src/site/xdocTemplates/manual

noreply.seb at qos.ch noreply.seb at qos.ch
Wed Nov 8 11:26:41 CET 2006


Author: seb
Date: Wed Nov  8 11:26:40 2006
New Revision: 884

Modified:
   logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml

Log:
on going work

Modified: logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml	(original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml	Wed Nov  8 11:26:40 2006
@@ -1678,7 +1678,7 @@
 		</p>
 
 		<p>
-			The table below summarizes the database tapes and their support of the 
+			The table below summarizes the database types and their support of the 
 			<code>getGeneratedKeys()</code> method.
 		</p>
 
@@ -1740,82 +1740,13 @@
 		<p>
 			Configuring logback to use <code>DBAppender</code> can be done
 			in several different ways, depending on the tools one has to
-			connect to the database, and the database itself.
+			connect to the database, and the database itself. All manners of 
+			configuring <code>DBAppender</code> are about setting its
+			<code>ConnectionSource</code> object, which we will cover in
+			a short moment.
 		</p>
 		
 		<p>
-			The first example that we will review is a configuration using
-			<code>DriverManagerConnectionSource</code> and a MySQL database.
-			The following configuration file is what one would need.
-		</p>
-		
-<em>Example 4.6: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml)</em>
-<div class="source"><pre>&lt;configuration>
-
-  <b>&lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-    &lt;connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
-      &lt;driverClass>com.mysql.jdbc.Driver&lt;/driverClass>
-      &lt;url>jdbc:mysql://host_name:3306/datebase_name&lt;/url>
-      &lt;user>username&lt;/user>
-      &lt;password>password&lt;/password>
-    &lt;/connectionSource>
-  &lt;/appender></b>
-	
-  &lt;!-- Prevent internal logback DEBUG messages from polluting the output. -->
-  &lt;logger name="ch.qos.logback.core.joran">&lt;level value="INFO" />&lt;/logger>
-  &lt;logger name="ch.qos.logback.classic.joran">&lt;level value="INFO" />&lt;/logger>
-	
-  &lt;root>
-    &lt;level value="debug" />
-    &lt;appender-ref ref="DB" />
-  &lt;/root>
-&lt;/configuration></pre></div>
-
-		<p>
-			The correct driver must be declared. Here, the <code>com.mysql.jdbc.Driver</code>
-			class is used. The <span class="option">url</span> must begin with <em>jdbc:myslq://</em>.
-		</p>
-		
-		<p>Connecting to a database using a <code>DataSource</code> is rather similar:</p>
-	
-<em>Example 4.7: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-with-datasource.xml)</em>	
-<div class="source"><pre>&lt;configuration>
-
-  &lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-     <b>&lt;connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
-       
-       &lt;dataSource class="${dataSourceClass}">
-       	 </b>&lt;!-- Joran cannot substitute variables
-       	 that are not attribute values. Therefore, we cannot
-       	 declare the next parameter like the others. 
-       	 -->
-         <b>&lt;param name="${url-key:-url}" value="${url_value}"/>
-         &lt;serverName>${serverName}&lt;/serverName>
-         &lt;databaseName>${databaseName}&lt;/databaseName>
-       &lt;/dataSource></b>
-       
-       &lt;user>${user}&lt;/user>
-       &lt;password>${password}&lt;/password>
-     &lt;/connectionSource>
-  &lt;/appender>
-  
-  &lt;!-- Prevent internal logback DEBUG messages from polluting the output. -->
-  &lt;logger name="ch.qos.logback.core.joran">&lt;level value="INFO" />&lt;/logger>
-  &lt;logger name="ch.qos.logback.classic.joran">&lt;level value="INFO" />&lt;/logger>
-    
-  &lt;root>
-    &lt;level value ="debug"/>
-    &lt;appender-ref ref="DB" />
-  &lt;/root>  
-&lt;/configuration></pre></div>
-
-		<p>
-			Not that in this configuration sample, we make heavy use of substitution variables.
-			They are sometimes handy when connection details have to be centralised in a
-			single configuration file and shared by logback and other frameworks.
-		</p>	
-		
-		<p>
 			Once logback is configured properly, the logging events are sent to
 			the specified database. As stated previously, there are three tables
 			used by logback to store logging event data.
@@ -1970,8 +1901,189 @@
 		
 		<img src="images/chapter4/dbAppenderLEProperty.gif" alt="Logging Event Property table" />
 
+		
+		<h4>ConnectionSource</h4>
+		
+		<p>
+			The <id>ConnectionSource</id> interface provides a pluggable means of 
+			transparently obtaining JDBC Connections for logback classes that 
+			require the use of a <code>java.sql.Connection</code>. There are currently
+			three implementations of <code>ConnectionSource</code>, namely
+			<code>DataSourceConnectionSource</code>, <code>DriverManagerConnectionSource</code>
+			and <code>JNDIConnectionSource</code>.
+		</p>
+		
+		<p>
+			The first example that we will review is a configuration using
+			<code>DriverManagerConnectionSource</code> and a MySQL database.
+			The following configuration file is what one would need.
+		</p>
+		
+<em>Example 4.6: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml)</em>
+<div class="source"><pre>&lt;configuration>
+
+  <b>&lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
+    &lt;connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
+      &lt;driverClass>com.mysql.jdbc.Driver&lt;/driverClass>
+      &lt;url>jdbc:mysql://host_name:3306/datebase_name&lt;/url>
+      &lt;user>username&lt;/user>
+      &lt;password>password&lt;/password>
+    &lt;/connectionSource>
+  &lt;/appender></b>
+	
+  &lt;!-- Prevent internal logback DEBUG messages from polluting the output. -->
+  &lt;logger name="ch.qos.logback.core.joran">&lt;level value="INFO" />&lt;/logger>
+  &lt;logger name="ch.qos.logback.classic.joran">&lt;level value="INFO" />&lt;/logger>
+	
+  &lt;root>
+    &lt;level value="debug" />
+    &lt;appender-ref ref="DB" />
+  &lt;/root>
+&lt;/configuration></pre></div>
+
+		<p>
+			The correct driver must be declared. Here, the <code>com.mysql.jdbc.Driver</code>
+			class is used. The <span class="option">url</span> must begin with <em>jdbc:myslq://</em>.
+		</p>
+		
+		<p>
+			The 
+			<a href="../xref/ch/qos/logback/core/db/DriverManagerConnectionSource.html">
+			<code>DriverManagerConnectionSource</code></a> is an implementation of
+			<code>ConnectionSource</code> that obtains the connection in the
+			traditional JDBC manner based on the connection URL.
+		</p>
+		<p>
+			Note that this class will establish a new <code>Connection</code> for
+			each call to <code>getConnection()</code>. It is recommended
+			that you either use a JDBC driver that natively supports
+			connection pooling or that you create your own
+			implementation of <code>ConnectionSource</code> that taps into
+			whatever pooling mechanism you are already using. (If you
+			have access to a JNDI implementation that supports
+			<code>javax.sql.DataSource</code>, e.g. within a J2EE application
+			server, see <code>JNDIConnectionSource</code>).
+		</p>
+
+		<p>
+			If you do not have another connection pooling mechanism built
+			into your application, you can use the
+			<a href="http://jakarta.apache.org/commons/dbcp/index.html">
+		  commons-dbcp </a> package from Apache:
+		</p>
+
+<div class="source"><pre>
+  &lt;connectionSource
+    class=&quot;ch.qos.logback.core.db.DriverManagerConnectionSource&quot;&gt;
+    &lt;param name=&quot;driver&quot; value=&quot;org.apache.commons.dbcp.PoolingDriver&quot;/&gt; 
+    &lt;param name=&quot;url&quot; value=&quot;jdbc:apache:commons:dbcp:/myPoolingDriver&quot;/&gt; 
+  &lt;/connectionSource&gt;
+</pre></div>
+		
+		<p>
+			Then the configuration information for the commons-dbcp
+			package goes into the file <em>myPoolingDriver.jocl</em> and is
+			placed in the classpath. See the
+			<a href="http://jakarta.apache.org/commons/dbcp/index.html"> commons-dbcp </a>
+			documentation for details.
+		</p>
+
+		<p>
+			Connecting to a database using a <code>DataSource</code> is rather similar.
+			The configuration now uses 
+			<a href="../xref/ch/qos/logback/core/db/DataSourceConnectionSource.html">
+			<code>DataSourceConnectionSource</code></a>, 
+			which is an implementation of <code>ConnectionSource</code> that obtains the 
+			<code>Connection</code> in the recommended JDBC manner based on a 
+			<code>javax.sql.DataSource</code>.
+		</p>
+	
+<em>Example 4.7: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-with-datasource.xml)</em>	
+<div class="source"><pre>&lt;configuration>
+
+  &lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
+     <b>&lt;connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
+       
+       &lt;dataSource class="${dataSourceClass}">
+       	 </b>&lt;!-- Joran cannot substitute variables
+       	 that are not attribute values. Therefore, we cannot
+       	 declare the next parameter like the others. 
+       	 -->
+         <b>&lt;param name="${url-key:-url}" value="${url_value}"/>
+         &lt;serverName>${serverName}&lt;/serverName>
+         &lt;databaseName>${databaseName}&lt;/databaseName>
+       &lt;/dataSource></b>
+       
+       &lt;user>${user}&lt;/user>
+       &lt;password>${password}&lt;/password>
+     &lt;/connectionSource>
+  &lt;/appender>
+  
+  &lt;!-- Prevent internal logback DEBUG messages from polluting the output. -->
+  &lt;logger name="ch.qos.logback.core.joran">&lt;level value="INFO" />&lt;/logger>
+  &lt;logger name="ch.qos.logback.classic.joran">&lt;level value="INFO" />&lt;/logger>
+    
+  &lt;root>
+    &lt;level value ="debug"/>
+    &lt;appender-ref ref="DB" />
+  &lt;/root>  
+&lt;/configuration></pre></div>
+
+		<p>
+			Not that in this configuration sample, we make heavy use of substitution variables.
+			They are sometimes handy when connection details have to be centralised in a
+			single configuration file and shared by logback and other frameworks.
+		</p>	
+		
+		<p>
+			The third implementation of <code>ConnectionSource</code> that is shipped with
+			logback is the <code>JNDIConnectionSource</code>.
+		</p>
+
+		<p>
+			The
+			<a href="../xref/ch/qos/logback/core/db/JNDIConnectionSource.html">
+			<code>JNDIConnectionSource</code></a>
+			is an implementation of <code>ConnectionSource</code> that
+			obtains a <code>javax.sql.DataSource</code> from a JNDI provider
+			and uses it to obtain a <code>java.sql.Connection</code>. It is
+			primarily designed to be used inside of J2EE application
+			servers or application server clients, assuming the
+			application server supports remote access of <code>javax.sql.DataSource</code>. 
+			In this way one can take advantage of connection pooling and whatever other goodies the
+			application server provides.
+		</p>
+		
+<div class="source"><pre>
+&lt;connectionSource class=&quot;ch.qos.logback.core.db.JNDIConnectionSource&quot;&gt;
+  &lt;param name=&quot;jndiLocation&quot; value=&quot;jdbc/MySQLDS&quot; /&gt;
+  &lt;param name=&quot;username&quot; value=&quot;myUser&quot; /&gt;
+  &lt;param name=&quot;password&quot; value=&quot;myPassword&quot; /&gt;
+&lt;/connectionSource&gt;
+ </pre></div>
+
+		<p>
+			Note that this class will obtain an
+			<code>javax.naming.InitialContext</code>
+			using the no-argument constructor. This will usually work
+			when executing within a J2EE environment. When outside the
+			J2EE environment, make sure that you provide a
+			<em>jndi.properties</em>
+			file as described by your JNDI provider's documentation.
+		</p>
+
+
+		<p>
+ 			<b>MORE INFO TO ADD HERE JNDI + BindAction + DataSourceCS? Or directly
+ 			with JNDICS??</b>
+ 		</p>
+
 
 		<h3>SyslogAppender</h3>
+		
+		<p>
+			
+		</p>
 
 		<h2>Logback Access</h2>
 		



More information about the logback-dev mailing list