android的logback实现似乎缺少DBAppender类。
这是我相关的Logback Appender配置,位于asset / logback.xml中。
<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://10.2.2.222:3306/logback</url>
<user>username</user>
<password>thepassword</password>
</connectionSource>
</appender>
和gradle:
implementation 'org.slf4j:slf4j-api:1.7.25'
implementation 'com.github.tony19:logback-android:1.1.1-12'
,并在我的logcat中导致错误:
20:40:50,225 |-ERROR in ch.qos.logback.core.joran.action.AppenderAction -
Could not create an Appender of type [ch.qos.logback.classic.db.DBAppender].
ch.qos.logback.core.util.DynamicClassLoadingException:
Failed to instantiate type ch.qos.logback.classic.db.DBAppender
at ch.qos.logback.core.util.DynamicClassLoadingException:
Failed to instantiate type ch.qos.logback.classic.db.DBAppender
和
Caused by: ch.qos.logback.core.util.DynamicClassLoadingException:
Failed to instantiate type ch.qos.logback.classic.db.DBAppender
和
Caused by: java.lang.ClassNotFoundException:
Didn't find class "ch.qos.logback.classic.db.DBAppender"
如果没有注释掉数据库内容,而只是将其记录到文件中,则注销将正常工作,它将正确实例化并在日志文件中生成文本。
我找到了一些使用DBAppender的人的例子,但是还没有发现任何基于 android 的人。
ps:我还尝试了另一个选项DataSourceConnectionSource(与所示的DriverManagerConnectionSource相对),但是它实际上使用了相同的附加程序,因此具有相同的错误。我也没有在github文件中找到对DBAppender的任何引用。
答案 0 :(得分:1)
logback-android
当前不支持DBAppender
,并且没有确定的计划继续使用该功能。支持的唯一数据库附加程序是SQLiteAppender
。
将DBAppender
的相关源从logback
提取到其自己的库(可以在logback-android
中使用)应该相对简单。对于将来的主要版本,我计划以这种方式拆分几个内置的附加程序,以最大程度地减小库的大小。