Как я могу контролировать android.util.log или переопределить его? - PullRequest
1 голос
/ 10 апреля 2019

Я использую log.d / v / w / e везде в проекте.

Теперь я хочу сохранить все журналы в локальном файле устройства.

Однако,класс android.util.Log в последнем классе.

Это означает, что я не могу расширяться от него.

Есть ли способ взять контроль над android.util.Log, так чточто мне не нужно менять log.d / v / w / e везде в проекте?

Я ищу простой способ узнать, получает ли log.d / v / w / eи так, чтобы я мог записать информацию в локальный файл.

1 Ответ

1 голос
/ 10 апреля 2019

Когда вам необходимо добавить к функциональности конечного класса, распространенным вариантом является использование шаблона декоратора (оболочки):

public class LogUtils {

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

  ...
}

Этот вид реализации для ведения журнала довольно популярен.

Однако есть еще один вариант написания вашей собственной обертки.Библиотека Джейка Уортона Timber уже обрабатывает все утилиты и добавляет некоторые другие тонкости, такие как автоматические теги и использование String.format для 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();

  }
}
...