SLF4J Android 1.7.+ 未登录 Logcat

SLF4J Android 1.7.+ not logging on Logcat

在我的 build.gradle 中,logcat 在

时可见
debugCompile 'org.slf4j:slf4j-android:1.6.1-RC1'

但是版本更新后,有logcat

debugCompile 'org.slf4j:slf4j-android:1.7.14'

我坚持使用 1.6.1-RC1 版本。为什么较新版本的 slf4j-android:1.7.x 没有记录在 logcat 中?

我在这样的代码中使用 SLF4J

private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(TAG);
LOG.debug("variable = {}", var);

参考资料

http://www.slf4j.org/android/

http://www.slf4j.org/news.html(变更日志)

我刚刚查看了 source code of AndroidLoggerAdapter.java 代码 1.7.+ 现在在每个日志语句之前使用 if isLoggable(priority) 而 1.6.+ 只是在不询问的情况下记录。

android 默认功能 if (Log.isLoggable("MY_TAG", Log.VERBOSE)) 总是 return false while Log.v("MY_TAG", "Here's a log message") 仍然有效

这解释了为什么 org.slf4j:slf4j-android:1.7.14 不再工作。

也许这有助于应对新版本:Android logging levels

我正在使用 http://github.com/lp0/slf4j-android 另一种实现,它使用配置文件来 enable/disable 配置设置

http://jira.qos.ch/browse/SLF4J-314给了我答案。

要查看 "slf4j-android:1.7.x" 上的日志,使用 Android setprop 是官方方法。 这种方法的缺点是您必须 select TAG 但不能显示所有日志。例如在 logcat 中:

app_package D/TAG1: blabla
app_package D/TAG2: lorem ipsum

在终端中,输入

adb shell setprop log.tag.TAG1 VERBOSE

我只会显示 TAG1 而不会显示其他 TAG。我想知道是否可以打印所有其他标签。

现在,我想我会坚持使用 1.6.1-RC1 版本