DaveWoodCom/XCGLogger
XCGLogger はとても便利なのだが、 log 出力する内容を string で渡さないといけないのを不満に思っていた。
var text = "log"
log.debug("\(text)") // こんな感じで string にして渡さないといけない
そうではなくて、 Swift.print(text)
みたいに変数とかオブジェクトそのまま渡して出力してくれる Log ライブラリを探してたら見つけたので紹介。
delba/Log: An extensible logging framework for Swift
半年くらい前に出てきたライブラリ。
Log という名前なのでググラビリティが低い...
Use Log just as you would use print. とある通りの使い勝手でいける。
Usage
中で出てくる #if DEBUG
が何かとか、 log
が Optional
になってる理由は XCGLogger で DEBUG の時だけ log を出す - Qiita を参考にして欲しい。
AppDelegate.swift
import Log
let log: Logger? = {
#if DEBUG
let Log = Logger(formatter: .Detailed, theme: .TomorrowNight)
return Log
#else
return nil
#endif
}()
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
let one = 1
let warning = "warning!!!!!!"
let error = "error!!!!!!"
log?.trace("Called!!!")
log?.debug("Who is self:", self)
log?.info(one)
log?.warning(warning, separator: " - ")
log?.error(error, terminator: "😱😱😱\n")
}
結果
String だろうと変数であろうと、 Swift.print()
の感覚でログ出力できてめでたい