java - Logback - 使用多个实例

标签 java android kotlin logback

我在我的 Android 项目中使用 logback。我个人很喜欢这个记录器,不会使用其他任何东西。

我开始使用 GPS 位置,为此,我使用了第三方库 'background-geolocation-lt '。这个库也使用了 logback。

加载background-geolocation-lt后,我的记录器停止工作(不将日志写入文件),并且似乎我的配置已被该库覆盖。以正确的方式 Logcat 和调试控制台登录 - 这都是关于文件附加程序的。更多详细信息请参见下面的代码 - 初始化 bgGeo 后,消息“我没有写入文件”尚未写入文件。

class MainActivity : AppCompatActivity() {

    private val logger = LoggerFactory.getLogger(MainActivity::class.java)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // some other code

        logger.info("I'm writing to file")

        val bgGeo =
            BackgroundGeolocation.getInstance(applicationContext, intent)

        logger.info("I'm not writing to file")
    }
}

我的配置文件非常简单:

<configuration>
<property name="LOG_DIR" value="${DATA_DIR}/logs" />

<appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender">
    <tagEncoder>
        <pattern>%logger{12}</pattern>
    </tagEncoder>
    <encoder>
        <pattern>%msg</pattern>
    </encoder>
</appender>

<appender name="file" class="ch.qos.logback.core.FileAppender">
    <file>${LOG_DIR}/current_log.txt</file>
    <encoder>
        <pattern>%d{dd.MM.yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<root level="DEBUG">
    <appender-ref ref="file" />
    <appender-ref ref="logcat" />
</root>
</configuration>

我的问题是:

是否可以使用单独的配置和记录器工厂创建一个单独的 logback 实例?

预先感谢您对此主题的任何帮助:)

最佳答案

尝试从 background-geolocation-lt 库中排除 logback 的传递依赖,您可以排除像这样的任何传递依赖 -

dependencies {
  compile('com.example.m:m:1.0') {
     exclude group: 'org.unwanted', module: 'x 
  }
  compile 'com.example.l:1.0'
}

为了确保 Logback 作为间接依赖项出现,您可以使用 - 检查依赖关系树 -

gradle dependencies

关于java - Logback - 使用多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59514058/

相关文章:

Windows 8 中的 JavaFX 应用程序启动

java - 如何实现带默认参数的函数

java - LibGDX - 并非所有 Sprite 都被渲染

android - public open fun navigateUp() 的争论太多

java - Jsoup不解析表中的数据

android - 未捕获的翻译错误 : com. android.dx.cf.code.SimException: local 0007: invalid

.map 返回的 Java-8 Stream 是并行的还是顺序的?

Java Android 未处理的异常类型 IOException 和未处理的异常类型 ClientProtocolException

java - 如何分组并删除重复的对象

android - 如何在 Jetpack Compose 中制作虚线/虚线?