Я использую log.d/v/w/e везде в проекте.
Теперь я хочу сохранить все журналы в локальном файле устройства.
Тем не менее, класс android.util.Log в последнем классе.
Это значит, что я не могу от этого отказаться.
Есть ли способ взять контроль над android.util.Log, чтобы мне не нужно было менять log.d/v/w/e везде в проекте?
Я ищу простой способ узнать, вызывается ли log.d/v/w/e, и чтобы я мог записать информацию в локальный файл.
Когда вам нужно добавить к функциональности конечного класса, распространенным вариантом является использование шаблона декоратора (оболочки):
public class LogUtils {
public static void LOGE(String tag, String message) {
Log.e(tag, message);
doSomethingElse();
}
...
}
Такая реализация для ведения журнала довольно популярна.
Тем не менее, есть еще один вариант написания вашей собственной оболочки. Библиотека Jake Wharton 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();
}
}