2010-03-31 14 views
0

J'essaie d'utiliser DBAppender de Logback. Mon logback.xml a la appender suivante:Logback DBAppender url

</appender> 
<appender name="DatabaseAppender" class="ch.qos.logback.classic.db.DBAppender"> 
    <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> 
    <driverClass>oracle.jdbc.OracleDriver</driverClass> 
    <url>jdbc:oracle:thin:@HOST_URL:PORT:SERVICE_NAME</url> 
    <user>USER</user> 
    <password>PASS</password> 
</connectionSource> 
</appender> 

les œuvres données url avec d'autres classes java dans le même projet, mais il échoue avec logback donnant l'erreur suivante

ORA-00904: "ARG3": invalid identifier 

     at java.sql.SQLException: ORA-00904: "ARG3": invalid identifier 

où ARG3 est le <url>jdbc:oracle:thin:@HOST_URL:PORT:SERVICEID</url>

Répondre

3

Je serais intéressé par l'instruction Oracle résultant de cette erreur. Ma conjecture est qu'elle essaye une valeur INSERT INTO table (arg1, arg2, arg3) (...); lorsque la table ne contient pas cette colonne.

Si vous ne connaissez pas la table, vérifiez here pour forcer un vidage d'erreur lorsque l'erreur 904 est rencontrée.

Je peux faire

ALTER system SET EVENTS '904 TRACE NAME ERRORSTACK LEVEL 3'; 

Puis, quand l'erreur est soulevée, la base de données génère un fichier de trace qui devrait montrer l'énoncé du problème similaire à ce qui suit:

ORA-00904: "FRFRF": invalid identifier 
Current SQL statement for this session: 
select frfrf from dual 
+0

Vous avez raison. Merci pour le conseil. J'ai creusé un peu et découvert qu'ils ont changé la structure de la base de données mais n'ont pas mis à jour la documentation. Depuis la version 0.9.19, la table logging_event a besoin des quatre colonnes suivantes: arg0 VARCHAR (254); arg1 VARCHAR (254); arg2 VARCHAR (254); arg3 VARCHAR (254); –

0

POUR CONNECTIONS DataSource :

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> 
    <connectionSource 
     class="ch.qos.logback.core.db.DataSourceConnectionSource"> 
     <dataSource 
     class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
     <driverClass>oracle.jdbc.driver.OracleDriver</driverClass> 
     <jdbcUrl>jdbc:oracle:thin:@localhost:1521:XE</jdbcUrl> 
     <user>system</user> 
     <password>a</password> 
     </dataSource> 
    </connectionSource> 
    </appender> 

POUR CONNECTIONS DriverManager:

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> 
    <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> 
     <driverClass>com.mysql.jdbc.Driver</driverClass> 
     <url>jdbc:mysql://host_name:3306/datebase_name</url> 
     <user>username</user> 
     <password>password</password> 
    </connectionSource> 
    </appender>