Древесина - это легкая фреймворк, написанная в Swift. Он очень эффективен и запускает все операции на основе регистрации вдали от основной нагрузки, гарантируя, что пользовательский интерфейс или любые другие операции остаются незатронутыми.
Древесина также безумно гибкая. Он предоставляет класс LogFormat
, который позволяет вам указать, как должны искать сообщения журнала, и включает в себя пользовательские форматы даты, а также различную информацию, связанную с файлом, в котором было выполнено сообщение журнала, например, имя файла, функция и строка.
Timber даже предоставляет средства для отброса ваших журналов от консоли, предоставляя свою собственную трубу для хранения сообщений журнала в других местах, таких как в файле или на вашем собственном сервере.
В отличие от ряда других доступных фреймворков журнала, Timber позволяет указать уровни журнала для любых/всех ваших файлов. Скажем, например, вы хотели отключить регистрацию сетевых запросов при тестировании отдельной функции, вызывая Logger.registerMinLevel(.None)
в своем сетевом классе, вы можете отключить сообщения от вывода журналов.
Просто добавьте следующее в свой Podfile. Имейте в виду, что название кокопода - TimberSwift
, а не Timber
.
pod 'TimberSwift'
Клонировать репозиторий и добавить все файлы, найденные в /древесины /классы в ваш проект.
Рекомендуется запустить модульные тесты перед интеграцией древесины в ваш проект. Это можно сделать, выполнив следующее в корневом каталоге Timber. Пожалуйста, убедитесь, что у вас установлен бундлер, и, если не запустить gem install bundler
.
$ bundle install
$ make test
Logger . registerMinLevel ( . Error ) // Set the log-level for the current file if needed
Logger . debug ( " This will not be logged as the debug log level is < error " )
Logger . error ( " Oh dear... An error occurred: ( some_error ) " )
Logger . info ( " The network request succeeded with status code ( status code ) " )
Logger . warn ( " The network response contains some unexpected data " )
// etc...
Чтобы переопределить формат журнала по умолчанию, используемый TIMBER, который является [Level Date Filename:Line] Message
, вы должны сначала создать свой собственный LogFormat
и передать его либо в глобальный Logger
, либо свой собственный.
let logFormat = LogFormat ( template : " [%@ %@ %@:%@] %@ " , attributes : [
LogFormatter . Attributes . Level ,
LogFormatter . Attributes . Date ( format : " HH:mm:ss " ) ,
LogFormatter . Attributes . FileName ( fullPath : false , fileExtension : true ) ,
LogFormatter . Attributes . Line ,
LogFormatter . Attributes . Message
] )
// Attach it to the global Logger
Logger . setFormat ( logFormat )
// Or attach it to your own logger
someLogger . logFormat = logFormat
// Or pass it in when you instantiate your logger
let someLogger = Logger ( minLevel : . All , logFormat : logFormat )
Древесина полностью задокументирована, и документацию можно найти по адресу http://maxkramer.github.io/timber/.
Как упомянуто в Logger+Loglevels.Swift, мы равномерно используем те же приоритеты журнала, что и log4j Apache. Это следующее:
ALL < DEBUG < TRACE < INFO < WARN < ERROR < FATAL < OFF.
Следовательно, запрос журнала уровня P в журнале с уровнем Q включен, если p> = q.
Уровень | Описание |
---|---|
ВСЕ | Все уровни, включая пользовательские уровни. |
ОТЛАЖИВАТЬ | Определяет мелкозернистые информационные события, которые наиболее полезны для отладки приложения. |
ОШИБКА | Определяет события ошибок, которые все еще могут позволить приложению продолжать работать. |
Фатальный | Определяет очень серьезные события ошибок, которые, вероятно, приведут приложение к прерыванию. |
ИНФОРМАЦИЯ | Определяет информационные сообщения, которые подчеркивают прогресс приложения на крупнозернистом уровне. |
ВЫКЛЮЧЕННЫЙ | Самый высокий ранг и предназначен для отключения регистрации. |
СЛЕД | Определяет более тонкозернистые информационные мероприятия, чем отладки. |
ПРЕДУПРЕЖДАТЬ | Определяет потенциально вредные ситуации. |
Визуально:
Ссылка: страница архитектуры log4j.