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 installing XcodeColors and KZLinkedConsole

UsageInstallationLicense

Usage

The basics

  • Use Log just as you would use print.
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 setting enabled to false:
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, and error.

Customization

  • Create your own Logger by changing its Theme and/or Formatter.

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'

GitHub

https://github.com/delba/Log