logback-android是否支持DBAppender?

时间:2018-07-10 01:04:43

标签: android logging logback appender

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的任何引用。

1 个答案:

答案 0 :(得分:1)

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

DBAppender的相关源从logback提取到其自己的库(可以在logback-android中使用)应该相对简单。对于将来的主要版本,我计划以这种方式拆分几个内置的附加程序,以最大程度地减小库的大小。