<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<!-- This is a Configuration-file example, which can be used with the DOMConfigurator to use the JDBCAppender -->
<!-- author : Thomas Fenner (t.fenner@klopotek.de) -->
<!-- update : Danko Mannhaupt (http://www.mannhaupt.com/danko/contact/) -->

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

	<!-- Declare a appender variable named JDBC, which is a class of JDBCAppender, which writes messages into a database -->
	<appender name="JDBC" class="org.apache.log4j.jdbcplus.JDBCAppender">
	
		<!-- 1. Options for connecting to the database. (Use 1a OR 1b OR both) -->
		
		<!-- 1a. Database-options to connect to a specific database. (optional)  -->
		<!--
		<param name="url" value="jdbc:oracle:thin:@lenzi:1521:lenzi" />
		<param name="username" value="mex_pr_dev65" /> 
		<param name="password" value="mex_pr_dev65" />
		-->

		<!-- 1b. Connector-option to specify your own JDBCConnectionHandler. If the Database-Options are given, the handler is called with the desired database-params. (optional) -->
		<!-- <param name="connector" value="org.apache.log4j.jdbcplus.examples.MySqlConnectionHandler" /> -->
		<param name="connector" value="org.apache.log4j.jdbcplus.examples.FirebirdPoolConnectionHandler" />
		<!-- <param name="connector" value="org.apache.log4j.jdbcplus.examples.OracleConnectionHandler" /> -->
				

		<!-- 2. Options for generating insert-statements (Use 2a OR 2b OR 2c) -->
		
		<!-- 2a. SqlHandler-option to specify your own JDBCSqlHandler -->
		<!-- <param name="sqlhandler" value="org.apache.log4j.jdbcplus.examples.SqlHandler" /> -->

		<!-- 2b. SQL-option to specify a static sql-statement which will be performed with every occuring message-event -->
		<!-- Use wildcards @INC@, @PRIO@, @CAT@, @THREAD@, @MSG@, @LAYOUT:x@, @TIMESTAMP@, @THROWABLE@, @NDC@, @MDC:key@ for dynamic replacement. See JavaDoc for further description -->
		<param name="sql" 
			value="INSERT INTO LOGTEST (id, prio, cat, thread, msg, layout_msg, throwable, ndc, mdc, mdc2, info, addon, the_date, the_time, the_timestamp, created_by) VALUES (@INC@, '@PRIO@', '@CAT@', '@THREAD@', '@MSG@', '@LAYOUT:1@', '@THROWABLE@', '@NDC@', '@MDC:MyMDC@', '@MDC:MyMDC2@', 'info timestamp: @TIMESTAMP@', 'addon', cast ('@LAYOUT:3@' as date), cast ('@LAYOUT:4@' as time), cast ('@LAYOUT:3@ @LAYOUT:4@' as timestamp), 'me')" />
		<!-- <param name="sql" value="INSERT INTO LOGTEST (id, prio, cat, thread, msg, created_on, created_by) VALUES (@INC@, '@PRIO@', '@CAT@', '@THREAD@', '@MSG@', sysdate, 'me')" /> -->
		<!-- <param name="sql" value="INSERT INTO LOGTEST (id, prio, cat, thread, msg, created_by) VALUES (@INC@, '@PRIO@', '@CAT@', '@THREAD@', '@MSG@', 'me')" /> -->
		
		<!-- 2c. Options to specify the table and describe the important columns. Not nullable columns are mandatory to describe ! -->
		<!-- 
		This configuration uses updatable resultsets by default. This may not work for some databases/drivers.
		It causes a "not yet implemented" error on Firebird, and "Result Set not updateable" on MySQL.
      	Use option usePreparedStatements=true or other configuration options instead.
      	See log4j_test_prepstmt.xml for examples.
      	-->
		<!-- For column-param use the syntax column-name~LogType~value
		<param name="table" value="logtest" /> 
		<param name="column" value="id~ID~org.apache.log4j.jdbcplus.examples.MyIDHandler" /> 
		<param name="column" value="prio~PRIO" /> 
		<param name="column" value="cat~CAT" /> 
		<param name="column" value="thread~THREAD" /> 
		<param name="column" value="msg~MSG" /> 
		<param name="column" value="layout_msg~LAYOUT" /> 
		<param name="column" value="info~DYNAMIC~org.apache.log4j.jdbcplus.examples.MyColumnHandler" /> 
		<param name="column" value="mdc~MDC~MyMDC" /> 
		<param name="column" value="created_on~TIMESTAMP" /> 
		<param name="column" value="created_by~STATIC~me" /> 
		-->
		<!-- Oracle sequence example
		<param name="column" value="id~ORACLE_SEQUENCE~MySequenceName" /> 
		-->

		<!-- 3. Buffer-option to define the size of the message-event-buffer (optional, default is 1) -->
		<param name="buffer" value="1" />

		<!-- 4. Commit-option to define a auto-commitment (optional, default is true) -->
		<param name="commit" value="true" />

		<!-- 5. Class name of JDBC driver (optional). This avoids Class.forName(...) -->
		<!-- alternatives: oracle.jdbc.driver.OracleDriver, com.mysql.jdbc.Driver -->
		<param name="dbclass" value="org.firebirdsql.jdbc.FBDriver" />

		<!-- 6. Option whether to replace single quotes (') by 2 single quotes ('') in sql parameters (optional, default is true) -->
		<param name="quoteReplace" value="true" />

		<!-- 7. maximum number of characters in throwable/exception stack trace. Used to limit very long stack traces. -->
		<param name="throwableMaxChars" value="3000" />

		<!-- 8. separator for conversion pattern. May be more than one character (J2SDK 1.4+ only) -->
		<param name="layoutPartsDelimiter" value="#-#" /> 
		
		<!-- 9. layout with conversion pattern -->
		<layout class="org.apache.log4j.PatternLayout">
			<!-- conversion pattern with 4 parts separated by #-#, second part is empty -->
		  	<param name="ConversionPattern" value="[%t] %m#-##-#%d{dd.MM.yyyy}#-#%d{HH:mm:ss}" /> 
		</layout>
	</appender>

	<!-- similar to JDBC config above, but uses the options commented out there	-->
	<appender name="JDBC1a2a" class="org.apache.log4j.jdbcplus.JDBCAppender">
	
		<!-- 1a. Database-options to connect to a specific database. (optional)  -->
		<param name="url" value="jdbc:firebirdsql:localhost/3050:danko" />
		<param name="username" value="danko" /> 
		<param name="password" value="danko" />

		<!-- 2a. SqlHandler-option to specify your own JDBCSqlHandler -->
		<param name="sqlhandler" value="org.apache.log4j.jdbcplus.examples.SqlHandler" />

		<param name="buffer" value="1" />
		<param name="commit" value="true" />
		<param name="dbclass" value="org.firebirdsql.jdbc.FBDriver" />
		<param name="quoteReplace" value="true" />
	</appender>

	<appender name="SYSTEMOUT" class="org.apache.log4j.ConsoleAppender">
		<param name="target" value="System.out" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value=" %d{dd.MM.yyyy HH:mm:ss} - %m\n" />
		</layout>
	</appender>

	<root>
		<!--
			<appender-ref ref="SYSTEMOUT" />
		-->
		<appender-ref ref="JDBC" /> 
		<appender-ref ref="JDBC1a2a" /> 
	</root>
	
</log4j:configuration>

