0

我正在尝试使用 Logback 的 DBAppender。我的 logback.xml 有以下附加程序:

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

4

2 回答 2

3

我会对导致此错误的 Oracle 语句感兴趣。我的猜测是它正在尝试一个 INSERT INTO 表 (arg1, arg2, arg3) 值 (...); 当表不包含该列时。

如果您不知道该表的内容,请在此处检查遇到 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
于 2010-03-31T22:41:19.317 回答
0

对于数据源连接:

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

对于驾驶员管理器连接:

 <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>
于 2010-12-17T08:59:46.173 回答