如何配置slf4j-android?

时间:2014-08-04 14:05:11

标签: android slf4j

我在我的Android应用程序中使用slf4j-android。 该文档说,如果我写log.trace,那么它与我写Log.v的几乎相同。 但是默认的日志记录级别似乎是INFO,而logcat只显示log.info及以上,我无法看到如何更改默认值。

1)如何配置slf4j-android

2)如果我不能:还有其他适用于Android的slf4j实现,更可配置

2 个答案:

答案 0 :(得分:0)

例如,如果您的代码是MyClass,请在命令行中输入

adb shell setprop log.tag.MyClass DEBUG

我找到的方法是这个程序 查找记录器slf4j-android source here

你应该看到所有方法都以if(isLoggable(...))开头,后者依次调用android.util.Log isLoggable,可以在opengrok上找到

此方法的说明解释了如何设置适当的属性。

请注意,slf4j-android会重命名更长的标签,WiFiDirectBroadcastReceiver将更改为*directBroadcastReceiver。 据我所知,你不能在setprop调用中使用*,所以你需要仔细管理你的标签。

答案 1 :(得分:0)

这是一种痛苦,但我不会放弃slf4j。这就是我最终做的事情:

  1. 在我的源代码中,我为每个活动实例化一个记录器:
  2. public class MyActivity extends AppCompatActivity {
        private final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(this.getClass().getName());
        ...
    }
    
    1. 在项目根目录中,我放置了一个shell脚本,用于一次性设置所有活动的日志记录级别:
    2. #!/bin/sh
      # Add as many lines as needed to set the logging for 
      # all the activities in your app
      adb shell setprop log.tag.MyActivity "$1"
      
      1. 然后,每当我需要设置会话的日志记录级别时,我切换到Terminal中的Android Studio视图,然后运行脚本:
      2. $ sh adb-setloglevel VERBOSE