我在Android项目中使用了logback。我个人喜欢这个记录器,不会使用其他任何东西。
我开始使用GPS位置,为此,我使用了第三方库'background-geolocation-lt'。该库还使用了logback。
加载background-geolocation-lt后,我的记录器停止工作(不将日志写入文件),并且看来我的配置已被该库覆盖。 Logcat和调试控制台loggin以正确的方式-全部与文件追加程序有关。下面的代码中有更多详细信息-初始化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实例?
在此主题之前,谢谢您的帮助:
尝试从logback
库中排除background-geolocation-lt
的传递依赖,您可以排除任何这样的传递依赖-
dependencies {
compile('com.example.m:m:1.0') {
exclude group: 'org.unwanted', module: 'x
}
compile 'com.example.l:1.0'
}
只要确保Logback成为间接依赖关系,您就可以使用-]检查依赖关系树。
gradle dependencies