Есть ли способ заменить стандартный журнал Android?

Есть ли способ как-то перехватить вызовы на стандартный вход в android и выполнить какое-то другое действие?

В настольной Java обычно можно получить некоторый журнал, поэтому есть способы установить другой обработчик / реализацию ведения журнала. Тем не менее, у Android, похоже, есть статический вызов Log, и я не мог найти никакой информации о замене поведения по умолчанию.

Я понимаю, что я могу контролировать журнал устройств через ADB, но мне хотелось бы, чтобы у меня было другое поведение при запуске приложений на устройстве, которое выбирает (например, путем выполнения определенной команды при запуске программы).

Поскольку AedonEtLIRA указывает, что журнал является окончательным, вам нужно перевернуть / заимствовать новый. Я использовал «MLog» Прашанты Пол: http://prasanta-paul.blogspot.com/2010/07/custom-logger-for-android.html

Это позволяет легко сохранять журналы в текстовом файле и / или полностью отключать ведение журнала. Если он еще не делает то, что вам нужно, это хорошая база для ведения журнала.

Я думаю, что лучшим решением было бы заменить все вызовы Log в вашем приложении собственным классом MyLog , а затем вызвать Log если они не MyLog , и вызвать специальную функцию ведения журнала, если они откажутся.

Замена всех вызовов журнала не должна быть сложной, просто найдите и замените.

В дополнение к MLog, предложенному @Darrell, для Android существует несколько других фреймворков регистрации, в том числе:

  • Logback-андроид
  • log4j-андроид
  • microlog4android

Из трех, logback (next-gen log4j) кажется наиболее способным и имеет богатый API (и много документации), в то время как microlog – самый компактный (но ограниченный в функциях … но возможно он делает все, что вы необходимость). Все три поддерживают фасад вырубки SLF4J , поэтому вы можете легко поменять микрофон на logback, log4j, jul или несколько новых рамок в будущем.

Как и в случае с MLog, эти рамки требуют замены вызовов на android.os.util.Log (он не «перехватывает» вызовы, как вы могли бы после этого).

Поскольку Log является окончательным, я думаю, вам придется написать свою собственную систему ведения журнала и реализовать это, если вы хотите что-то изменить.