Что такое файлы журналов на смартфоне

Обновлено: 21.11.2024

Предпочтительнее загрузить SDK и использовать adb logcat (требуется активировать «параметры разработчика» на устройстве).

Существуют приложения для просмотра полного системного журнала, однако они работают только на устройствах с root-доступом или требуют ввода команды вручную через adb, чтобы заставить их работать. Для получения дополнительной информации см. этот вопрос.

Вы можете либо загрузить SDK и использовать adb logcat, либо получить Logcat Extrem из магазина Google Play, который показывает журнал прямо на вашем телефоне.

Кроме того, вы можете использовать эмулятор терминала с командой "logcat > /sdcard/log.txt" для непрерывной записи журнала в файл на SD-карте. Это может помочь выявить проблемы со случайными перезагрузками.

Приложения LogCat больше не работают с JellyBean. Google изменил API Android, приложения больше не имеют разрешения на чтение журналов других приложений, кроме своих собственных.

Есть несколько каталогов, в которых могут появляться журналы (включая журналы сбоев) — не все из них стандартизированы (т. е. некоторые могут относиться к ПЗУ).

  • /data/anr : кажется, что некоторые файлы трассировки попадают сюда (Dalvik записывает трассировку стека здесь в ANR, то есть «Приложение не отвечает», также известное как «Принудительное закрытие»; см., например, выдержки из журнала здесь)
  • Похоже, что /data/dontpanic является стандартным расположением (AOSP) и содержит некоторые журналы сбоев, включая трассировки (см., например, viaForensics и StackOverflow)
  • /data/kernelpanics — это еще одно место. Поскольку на моих устройствах Android не было "паники ядра", я еще не видел там контента.
  • файл /data/panic/panic_daemon.config может указывать на другие настроенные расположения — на моем Droid 2 он упоминает /sdcard/panic_data/
  • упомянутый Droid 2 также имеет каталог /data/panicreports (здесь он пуст)
  • /data/tombstones может содержать несколько файлов tombstone_nn (где nn — это серийный номер, увеличивающийся с каждым новым файлом). Как надгробные плиты помещаются для умерших, так и здесь это делается для «процессов, умерших случайно» (т.е. аварийных) — и это то, что называется «дампами ядра» в системах Linux/Unix. Однако не все приложения создают надгробия; это должно быть явно разрешено разработчиком (см. Отладка дампов ядра Android).

Могут быть еще несколько мест, которые ускользнули от меня; но поскольку большая часть журналов выполняется на tmpfs , эти данные теряются при перезагрузке и не соответствуют вопросу OP.

Предпочтительнее загрузить SDK и использовать adb logcat (требуется активировать «параметры разработчика» на устройстве).

Существуют приложения для просмотра полного системного журнала, однако они работают только на устройствах с root-доступом или требуют ввода команды вручную через adb, чтобы заставить их работать. Для получения дополнительной информации см. этот вопрос.

Вы можете либо загрузить SDK и использовать adb logcat, либо получить Logcat Extrem из магазина Google Play, который показывает журнал прямо на вашем телефоне.

Кроме того, вы можете использовать эмулятор терминала с командой "logcat > /sdcard/log.txt" для непрерывной записи журнала в файл на SD-карте. Это может помочь выявить проблемы со случайными перезагрузками.

Приложения LogCat больше не работают с JellyBean. Google изменил API Android, приложения больше не имеют разрешения на чтение журналов других приложений, кроме своих собственных.

Есть несколько каталогов, в которых могут появляться журналы (включая журналы сбоев) — не все из них стандартизированы (т. е. некоторые могут относиться к ПЗУ).

  • /data/anr : кажется, что некоторые файлы трассировки попадают сюда (Dalvik записывает трассировку стека здесь в ANR, то есть «Приложение не отвечает», также известное как «Принудительное закрытие»; см., например, выдержки из журнала здесь)
  • Похоже, что /data/dontpanic является стандартным расположением (AOSP) и содержит некоторые журналы сбоев, включая трассировки (см., например, viaForensics и StackOverflow)
  • /data/kernelpanics — это еще одно место. Поскольку на моих устройствах Android не было "паники ядра", я еще не видел там контента.
  • файл /data/panic/panic_daemon.config может указывать на другие настроенные расположения — на моем Droid 2 он упоминает /sdcard/panic_data/
  • упомянутый Droid 2 также имеет каталог /data/panicreports (здесь он пуст)
  • /data/tombstones может содержать несколько файлов tombstone_nn (где nn — это серийный номер, увеличивающийся с каждым новым файлом). Как надгробные плиты помещаются для умерших, так и здесь это делается для «процессов, умерших случайно» (т.е. аварийных) — и это то, что называется «дампами ядра» в системах Linux/Unix. Однако не все приложения создают надгробия; это должно быть явно разрешено разработчиком (см. Отладка дампов ядра Android).

Могут быть еще несколько мест, которые ускользнули от меня; но поскольку большая часть журналов выполняется на tmpfs , эти данные теряются при перезагрузке и не соответствуют вопросу OP.

Записи журнала очень важны в жизни разработчика.Мы используем его для отображения полезной информации, ошибок, рабочих процессов или даже для отладки чего-либо. Журналы очень полезны в процессе разработки, но должны ли мы оставлять их в рабочем приложении? Предоставление информации о приложении

Каждая информация, которую мы регистрируем, может быть потенциальным источником проблем с безопасностью!

Какие типы журналов мы регистрируем в наших приложениях?

Вероятно, большинство из них содержат незначительную (с вашей точки зрения) информацию, например: «Вход в систему», «Получение токена», «Вход выполнен успешно», «Получение пользовательских данных». Безопасно ли хранить такие журналы в рабочем приложении? НЕТ. Почему? Потому что вся эта информация может быть очень полезна для человека, который хочет получить несанкционированный доступ к нашему приложению. До проверки логов потенциальный злоумышленник ничего не знает о том, как выглядит наш процесс авторизации, а что теперь? Он точно знает рабочий процесс авторизации. Он знает, что нужен какой-то токен, и после процесса авторизации мы получаем информацию о пользователе. Весьма полезный.

Давайте рассмотрим другой пример. Мы оставили журналы с некоторыми очень конфиденциальными данными (такими как токен авторизации, логин пользователя, пароль пользователя). Человек, который хочет наделать большой бардак на нашем сервере, уже имеет доступ ко всей необходимой информации, поэтому будет достаточно легко, например, сбросить базу данных, получить все пользовательские данные и т.д.

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

Утечки пользовательских данных (GDPR)

Утечка информации о рабочем процессе приложения или безответственное ведение журналов в рабочем приложении может привести к другой проблеме безопасности — утечке данных пользователя.

Ведение журналов, которые мы получаем или отправляем на сервер, может быть очень полезным, но хранение этих записей журнала в рабочем приложении может быть очень опасным. Почему? Поскольку они могут содержать конфиденциальные данные пользователя.

Такие данные следует обрабатывать осторожно. Будет очень обидно узнать, что ваша личная информация (электронная почта, номер телефона, адрес и т. д.) просочилась в Интернет. Это определенно снизит рейтинг и репутацию вашего приложения. Более того, с 25.05.2018 мы должны помнить о GDPR, когда речь идет об обработке конфиденциальных данных пользователей. В некоторых случаях нарушители GDPR могут быть оштрафованы на сумму до 20 млн евро или до 4 % годового мирового оборота за предыдущий финансовый год в случае предприятия, в зависимости от того, что больше.

Было бы еще хуже, если бы вы случайно оставили журналы со всей информацией, необходимой для использования чьей-то платежной карты или любого другого способа оплаты.

Содействие несанкционированному доступу

Нелегко обеспечить безопасность журналов в рабочем приложении. Журналы могут привести к несанкционированному доступу к вашему приложению и/или серверу. Такой доступ может привести к очень серьезным проблемам с безопасностью (например, к утечке пользовательских данных).

Знаете ли вы, что можете получить доступ к записям журнала из других приложений? Из руководства по безопасности Google:

Будьте осторожны при записи журналов на устройстве. В Android журналы являются общим ресурсом и доступны приложению с разрешением READ_LOGS . Несмотря на то, что данные журнала телефона являются временными и стираются при перезагрузке, ненадлежащее ведение журнала информации о пользователе может привести к непреднамеренной утечке пользовательских данных в другие приложения.

Было очень легко получить доступ к этим журналам в старых версиях Android (до Android 4.1). После предоставления упомянутого выше разрешения вы можете делать все, что хотите, с журналами других приложений.

Android 4.1 приносит нам очень важное улучшение безопасности. Начиная с этой версии, уровень защиты разрешения READ_LOGS был изменен на signature|level|development . Уровень защиты разработка означает, что приложение может запросить это разрешение, и оно будет отклонено при установке.

Итак, безопасно ли оставлять журналы в рабочих приложениях, если менее 1 % устройств работают на Android старше 4.1? Нет!

Существует простой способ предоставить разрешение READ_LOGS с помощью инструмента ADB! Как видите, в любом случае получить эти логи несложно.

Резюме

Как видите, сохранение записей журнала в рабочем приложении может привести ко многим серьезным проблемам с безопасностью, и обеспечить их безопасность непросто. Если вы читали документацию журнала, вы, вероятно, знаете, что:

«Verbose никогда не должен компилироваться в приложение, кроме как во время разработки. Журналы отладки компилируются, но удаляются во время выполнения. Журналы ошибок, предупреждений и информации всегда ведутся».

Кроме того, Google рекомендует удалять журнал вызовов при настройке приложения для выпуска.

И последнее, но не менее важное. Существует инструмент, созданный Джейком Уортоном под названием Timber. Это очень полезная библиотека, которая предоставляет утилиту поверх обычного класса Android Log.Пожалуйста, внимательно прочитайте README и найдите, что Джейк сказал об оставлении записей журнала в рабочем приложении - " каждый раз, когда вы входите в производственное приложение, умирает щенок "< /i> .

На вашем Android-телефоне заканчивается свободное место, и поэтому каждый раз, когда вы пытаетесь загрузить или обновить приложение из Google Play Store, появляется сообщение об ошибке "Недостаточно места для хранения"? Эта проблема, безусловно, возникает на телефонах Android с небольшим объемом внутренней памяти и даже на таких устройствах, как Samsung Galaxy Note с 16 ГБ встроенной памяти, но разделенной на разделы, что означает, что лишь небольшая часть этого пространства выделена для «Системной памяти», а оставшееся пространство занято. предназначен для данных, именуемых «USB Storage». Как вы, возможно, знаете, по умолчанию в системной памяти/памяти телефона установлено несколько приложений Android, что в конечном итоге приводит к нехватке внутренней памяти, независимо от того, сколько места на внутренней SD-карте.

Существуют различные способы увеличить внутреннее пространство на Android, но они зависят от вашего устройства. Некоторые из методов перечислены ниже, используйте тот, который подходит вам лучше всего.

<р>1. Удалить файлы журнала (самый простой и рекомендуемый)

<р>2. Переместите приложения на USB-накопитель или внешнюю SD-карту

Это один из самых эффективных способов освободить системное хранилище. Вы можете вручную переместить большинство приложений из памяти телефона во внутреннюю память, используя встроенную опцию «Переместить на USB-накопитель» в меню «Управление приложениями». Если этот параметр недоступен, используйте стороннее приложение, например App 2 SD, для пакетного перемещения приложений. Если ваш телефон рутирован, то Link2SD — гораздо лучшее приложение с расширенными функциями и возможностью перемещать неподвижные пользовательские приложения.

<р>3. Очистить кеш приложения и данные

Выберите Меню > Настройки > Приложения > Управление приложениями > Меню > Сортировать по размеру. Затем откройте приложения, потребляющие больше всего памяти, и либо Очистите кеш или Очистите данные по желанию. (Примечание: очистка данных приведет к удалению настроек и данных приложения). Файловые менеджеры, Браузер, Twitter, Gmail, Google Play Музыка, поиск Google, Facebook, Messenger, Dropbox, Soundcloud и т. д. — вот некоторые из приложений, занимающих много места в хранилище.

<р>4. Одновременная очистка всех кэшированных данных приложения (в Android 4.2)

Android 4.2 Jelly Bean поставляется с полезной функцией, которая позволяет удалять кэшированные данные сразу для всех приложений. Это было возможно и раньше, но приходилось вручную очищать кеш для каждого отдельного приложения, поэтому задача была утомительной. Чтобы очистить кеш, перейдите в «Настройки» и откройте «Хранилище». Затем нажмите на опцию «Кэшированные данные» и выберите «ОК». Преимущество здесь в том, что вы можете увидеть общий размер кэшированных данных перед удалением, поэтому вам решать, очищать его или нет.

<р>5. Измените место установки по умолчанию на SD-карту всех приложений

Следуйте процедуре, упомянутой здесь (но не пробовали лично).

<р>6. Удалите неиспользуемые приложения

Это очевидный способ освободить место, просто удалив все неактивные приложения. Рекомендуется удалить приложения, хранящиеся в памяти телефона, а предустановленные вредоносные приложения можно удалить после рутирования телефона с помощью «Titanium Backup».

Читайте также: