2010-03-31 72 views
0

我正在嘗試使用Logback的DBAppender。我logback.xml具有以下附加器: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> 

的URL給在同一項目中與其他Java類作品,但它失敗的logback給出以下錯誤

ORA-00904: "ARG3": invalid identifier 

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

其中ARG3是<url>jdbc:oracle:thin:@HOST_URL:PORT:SERVICEID</url>

回答

3

我會對導致此錯誤的Oracle語句感興趣。 我的猜測是它正在嘗試INSERT INTO表(arg1,arg2,arg3)值(...); 當表不包含該列時。

如果您不知道該表是什麼,那麼在檢測到here時,如果遇到904錯誤時強制進行錯誤轉儲。

我可以做一個

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

然後,當引發錯誤,數據庫產生一個跟蹤文件,該文件應顯示類似以下的問題陳述:

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

你說得對。感謝您的建議。我挖了一點,發現他們改變了數據庫結構,但沒有更新文檔。從0.9.19開始,logging_event表需要以下四列: arg0 VARCHAR(254); arg1 VARCHAR(254); arg2 VARCHAR(254); arg3 VARCHAR(254); – 2010-04-05 15:32:53

0

FOR DATASOURCE CONNECTIONS :

<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> 

FOR 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>