如何监控android.util.log或覆盖它?

问题描述 投票:1回答:1

我在项目的每个地方都使用log.d / v / w / e。

现在,我想将所有日志保存到设备本地文件。

但是,最终类中的android.util.Log类。

这意味着我无法延伸它。

有没有办法接管android.util.Log的控件,这样我就不需要在项目的各个地方更改log.d / v / w / e了?

我正在寻找一种简单的方法来了解log.d / v / w / e是否被调用,以便我可以将信息写入本地文件。

android logcat android-log
1个回答
1
投票

当您需要添加最终类的功能时,常见的选项是使用装饰器(包装器)模式:

public class LogUtils {

  public static void LOGE(String tag, String message) {
     Log.e(tag, message);
     doSomethingElse();
  }

  ...
}

这种日志记录实现非常流行。

但是,编写自己的包装器还有另一种选择。 Jake Wharton的库Timber已经处理了所有实用程序,并添加了一些其他细节,如自动标记和使用String.format for Java。

您可以添加自己的功能来处理自己的诊断逻辑,如下所示:

public class MyLoggingClass extends DebugTree {

  @Override
  public void log(int priority, String tag, String message, Throwable t) {

    if (BuildConfig.DEBUG) {
       super.log(priority, tag, message, t);
    }

    doSomethingElse();

  }
}
© www.soinside.com 2019 - 2024. All rights reserved.