logback-android 是否支持 DBAppender?

Does logback-android support DBAppender?

logback 的 android 实现似乎缺少 DBAppender class。

这是我的相关 logback appender 配置,位于 assets/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"

Logback 正常工作,否则,如果我注释掉数据库内容并将其记录到文件中,它会正确实例化并在日志文件中生成文本。

我找到了使用 DBAppender 的人的例子,但还没有发现任何看起来是 android 基础的

ps:我也尝试了另一个选项,DataSourceConnectionSource(与显示的 DriverManagerConnectionSource 相对),但它实际上使用相同的附加程序,因此产生相同的错误。我在 github 文件中也找不到对 DBAppender 的任何引用。

logback-android 目前不支持 DBAppender,并且没有确定的计划来继承该功能。唯一支持的数据库附加程序是 SQLiteAppender.

DBAppender的相关源代码从logback拉到自己的库中,可以在logback-android中使用,应该相对简单。对于未来的主要版本,我计划以这种方式拆分出几个内置的 appender 以最小化库大小。