This xml configuration example was submitted by Rich Bagley (thank you!), and is compatible with v1.2.7. A version specific to your environment will vary. Please see the JDBCAppender documentation.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:oracle:thin:@sd1.hbs.edu:1521:sc1" /> <param name="Driver" value="oracle.jdbc.driver.OracleDriver" /> <param name="User" value="user" /> <param name="Password" value="password" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO LOGGING_SAMPLES_TEST (log_date, log_level, location, message) VALUES ( '%d{ISO8601}','%p', '%C;%L', '%m' )" /> </layout> </appender> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} %p (%C;%L) %m%n" /> </layout> </appender> <logger name="logging.simple.jdbcLogger"> <level value="debug"/> <appender-ref ref="jdbcAppender"/> </logger> <root> <level value="error"/> <appender-ref ref="STDOUT"/> </root> </log4j:configuration>
A config for postgresql
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:postgresql:db" /> <param name="Driver" value="org.postgresql.Driver" /> <param name="User" value="user" /> <param name="Password" value="password" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO log4j (log_date, log_level, log_location, log_message) VALUES ( '%d{yyyy-MM-dd}','%p', '%C;%L', '%m' )" /> </layout> </appender> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} %p (%C;%L) %m%n" /> </layout> </appender> <logger name="logging.simple.jdbcLogger"> <level value="debug"/> <appender-ref ref="jdbcAppender"/> </logger> <root> <level value="error"/> <appender-ref ref="STDOUT"/> </root> </log4j:configuration>
If the first field is declare as a date in the db (it's the most usefull method, i think), the %d{}-variable must be changed. Also the SQL-statement is other than for oracle, the driver is changed and the url is another one.
An alternative JDBC appender (with documentation) is available at http://www.dankomannhaupt.de/projects/index.html that has a few additional features which may be of interest.