Ayuda con logback

Hola necesito ayuda con logback.
Mi problema esta en que necesito desarrollar un APPENDER en el que simplemente pueda conectarme a un DATASOURCE PROPORCIONADO, sin ningun dato de la base ya que esta configurada en el servidor en este caso TOMCAT. hasta el momento tengo solamente esta parte del appender
package mx.com.practicadb.practicadbuno.log;
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.classic.spi.*;
import ch.qos.logback.core.ConsoleAppender;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.naming.InitialContext;
import javax.naming.Context;
public class PracticaDB extends AppenderBase{
private String datasource;
private JdbcTemplate _jt;
public String getJndiLocation() {
return datasource;
}
public void setJndiLocation(String jndiLocation) {
datasource = jndiLocation;
}
@Override
public void start()
{
super.start();
if(datasource == null)
{
throw new IllegalStateException("Debe tener una locacion JNDI");
}
DataSource ds;
Context ctx;
try {
ctx = new InitialContext();
Object obj = ctx.lookup(datasource);
ds = (DataSource)obj;
if(ds==null){
throw new IllegalStateException("Fallo al obtener el data source");
}
_jt = new JdbcTemplate(ds);
} catch (Exception ex) {
throw new IllegalStateException("Data source no disponible",ex);
}
}
@Override
protected void append(ILoggingEvent e){
//log a la base de datos aqui usando jdbtemplate instance
}
}
necesito sabe como llamarlo del archivo logback.xml estoy usando Spring espero me puedan ayudar.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ElderMael

Te sirve el LogBack DBAppender?

Logback tiene ya un appender para base de datos que ademas soporta varios dialectos e.g.

<appender name="DBAppPostgreSQL" class="ch.qos.logback.classic.db.DBAppender">
  <!-- DriverManagerConnectionSource does not have a dataSource property -->
  <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
    <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <driverClass>org.postgresql.Driver</driverClass>
      <url>jdbc:postgresql://127.0.0.1:5678/DB</url>
      <user>YYYYY</user>
      <password>XXX</password>
    </dataSource>
  </connectionSource>
  <sqlDialect class="ch.qos.logback.core.db.dialect.PostgreSQLDialect" />
  <insertHeaders>true</insertHeaders>
</appender>

Si requieres otras configuraciones... pues hay bastantes en la ayuda de LogBack

Ejemplo con DBAppender

hola estoy usando el DBAppender para hacer un primer ejemplo y mandarlo a la base de datos pero al momento de ejecutarlo me lanza este error

-ERROR in ch.qos.logback.core.db.DriverManagerConnectionSource@8cc5c38 - Could not load JDBC driver class: oracle.jdbc.OracleDriver java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver at java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver

mas sin embargo ya tengo agregada la dependencia en el pom.xml

y mas abajo de ese error me aparece este otro mensaje

-ERROR in ch.qos.logback.core.joran.spi.Interpreter@13:71 - no applicable action for [sqlDialect], current ElementPath is [[configuration][appender][sqlDialect]]
11:29:23,390 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:20 - no applicable action for [insertHeaders], current ElementPath is [[configuration][appender][insertHeaders]]
11:29:23,393 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@15:12 - RuntimeException in Action for tag [appender] java.lang.IllegalStateException: DBAppender cannot function if the JDBC driver does not support getGeneratedKeys method *and* without a specific SQL dialect
at java.lang.IllegalStateException: DBAppender cannot function if the JDBC driver does not support getGeneratedKeys method *and* without a specific SQL dialect

si me pueden ayudar a solucionar este problema, soy nuevo en esto y lo que tengo en mi logback.xml es esto

oracle.jdbc.OracleDriver
jdbc:oracle:thin:@localhost:1521:XE
HR
hr

true

Hola

Hice todo lo que mencionas ahi, pero al momento de ejecutar mi primer ejemplo me aparece este error
-ERROR in ch.qos.logback.core.db.DriverManagerConnectionSource@8cc5c38 - Could not load JDBC driver class: oracle.jdbc.OracleDriver java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver at java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
mas sin embargo ya tengo agregada la dependencia en el pom.xml
y mas abajo de ese error me aparece este otro mensaje

-ERROR in ch.qos.logback.core.joran.spi.Interpreter@13:71 - no applicable action for [sqlDialect], current ElementPath is [[configuration][appender][sqlDialect]]
11:29:23,390 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:20 - no applicable action for [insertHeaders], current ElementPath is [[configuration][appender][insertHeaders]]
11:29:23,393 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@15:12 - RuntimeException in Action for tag [appender] java.lang.IllegalStateException: DBAppender cannot function if the JDBC driver does not support getGeneratedKeys method *and* without a specific SQL dialect
at java.lang.IllegalStateException: DBAppender cannot function if the JDBC driver does not support getGeneratedKeys method *and* without a specific SQL dialect

si me pueden ayudar a solucionar este problema, soy nuevo en esto y lo que tengo en mi logback.xml es esto
oracle.jdbc.OracleDriver
jdbc:oracle:thin:@localhost:1521:XE
HR
hr
true

Resuelto

Ya quedo resuelta esa parte, ahora mi duda es como hago el appender para escribir en una base de datos XE con el usuario hr contraseña hr
y la TABLA LOG_BACK ya tengo creada las tablas que se necesitan. espero me ayuden gracias.