An extensible logging framework for Swift
Log
is a powerful logging framework that provides built-in themes and formatters, and a nice API to define your owns.
Get the most out of
Log
by installingXcodeColors
andKZLinkedConsole
Usage • Installation • License
Usage
The basics
- Use
Log
just as you would useprint
.
let Log = Logger()
Log.trace("Called!!!")
Log.debug("Who is self:", self)
Log.info(some, objects, here)
Log.warning(one, two, three, separator: " - ")
Log.error(error, terminator: "???\n")
- Disable
Log
by settingenabled
tofalse
:
Log.enabled = false
- Define a minimum level of severity to only print the messages with a greater or equal severity:
Log.minLevel = .warning
The severity levels are
trace
,debug
,info
,warning
, anderror
.
Customization
- Create your own
Logger
by changing itsTheme
and/orFormatter
.
A suggested way of doing it is by extending Formatters
and Themes
:
extension Formatters {
static let detailed = Formatter("[%@] %@.%@:%@ %@: %@", [
.date("yyyy-MM-dd HH:mm:ss.SSS"),
.file(fullPath: false, fileExtension: false),
.function,
.line,
.level,
.message
])
}
extension Themes {
static let tomorrowNight = Theme(
trace: "#C5C8C6",
debug: "#81A2BE",
info: "#B5BD68",
warning: "#F0C674",
error: "#CC6666"
)
}
let Log = Logger(formatter: .detailed, theme: .tomorrowNight)
See the built-in formatters and themes for more examples.
Tip: Log.format
and Log.colors
can be useful to visually debug your logger.
Nothing prevents you from creating as many loggers as you want!
let Basic = Logger(formatter: .default, theme: nil)
let Short = Logger(
formatter: Formatter("%@: %@", .level, .message),
theme: .tomorrowNightEighties,
minLevel: .info
)
- Turn off the colors by setting the theme to
nil
:
Log.theme = nil
Advanced
Include a custom Block
component in your formatter to print its result in every log message:
struct User {
static func token() -> Int {
return NSUserDefaults.standardUserDefaults.integerForKey("token")
}
}
Log.formatter = Formatter("[%@] %@: %@", .block(User.token), .level, .message)
Installation
Carthage
Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate Log into your Xcode project using Carthage, specify it in your Cartfile
:
github "delba/Log"
CocoaPods
CocoaPods is a dependency manager for Cocoa projects.
You can install it with the following command:
$ gem install cocoapods
To integrate Log into your Xcode project using CocoaPods, specify it in your Podfile
:
use_frameworks!
pod 'Log'