Skip to content

vsiniak/iOS-Logging

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Logging for iOS

Описание

Apple System Log предоставляет широкие возможности для логирования, среди прочего, разделение логирумой информации по типу важности (debug, notice, error и др.) и хранение важных логов на устройстве (notice и важнее).

NSLog логирует всю информацию с уровнем warning, что несколько сужает возможности логирования, а также приводит к тому, что все логи, записанные через NSLog, хранятся на устройстве. Это усложняет изучение логов (их слишком много и все одного типа) и может привести к утечке конфиденциальных данных.

Читать подробнее.

Репозиторий содержит набор макросов для логирования в iOS с использованием Crashlytics (для удалённого логирования) для решения этой проблемы и повышения удобства и эффективности логирования.

Установка

Для установки нужно добавить в проект VSLogging.h и следующие зависимые библиотеки:

  1. MWLogging -- используется непосредственно для логирования (как обёртка для Apple System Log);
  2. Crashlytics -- для удалённого логирования (отправки логов в Fabric).

Удобно включить #import "VSLogging.h" в precompiled header, чтобы не подключать заголовок в каждый файл.

Использование

Есть три режима -- DEBUG, ADHOC, RELEASE, -- от которых зависит поведение функций логирования. Они задаются макросами (#define DEBUG 1). Макросы должны быть непротиворечивыми: только один макрос должен быть равен 1. Исключение -- RELEASE -- явно нигде не используется. Если !DEBUG и !ADHOC, то RELEASE. Режимы удобно настроить в соответствующих build configurations.

  1. VSLogDebug работает только в DEBUG. Информация только выводится в консоль -- не хранится на устройстве или удалённо. Предназначен для вывода отладочной информации во время дебага.
  2. VSLogWarning в ADHOC хранит информацию на устройстве и логирует удалённо в Crashlytics. Предназначен для логирования отладочной информации во время (бета-)тестирования.
  3. VSLogError логирует информацию на устройство и удалённо. Предназначен для логирования информации, которую может увидеть конечный пользователь ("Database Error", "Network Error" и т.д.). При использовании нужно соблюдать осторожность: не логировать конфиденциальную информацию.
  4. VSAssert в DEBUG и RELEASE работает как NSAssert. (По умолчанию, NSAssert в RELEASE не делает ничего.) В ADHOC проверяет условие и при его ложности логирует сообщение об ошибке с использованием VSLogWarning.

Пример

VSLogDebug(@"Initializing database...");
NSError *error;
if(![VSDatabase initWithError:&error])
{
    VSLogError(@"Error while initializing database: %@", error.localizedDescription);
}
VSLogDebug(@"Done");

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published