Logback DBAppender URL
سؤال
أحاول استخدام DBAPPENDER في LOGBACK. يحتوي 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>
المحلول
سأكون مهتمًا ببيان أوراكل مما أدى إلى هذا الخطأ. أظن أنه يحاول إدراج في الجدول (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
نصائح أخرى
لاتصالات مصدر البيانات:
<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>
لاتصالات 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>
لا تنتمي إلى StackOverflow