LoginSignup
29
29

More than 5 years have passed since last update.

XCGLogger で DEBUG の時だけ log を出す

Posted at

DaveWoodCom/XCGLogger

Objective-c / Swift でログを出力するライブラリ。
開発の DEBUG 時にのみログを出力したい、 PRODUCTION ではログを出したくない時の設定。

インストール方法とかは CocoaPods とか Carthage で入れる。

実装

1. DEBUG の設定

Swift での #ifdef DEBUG のやり方 を参考に DEBUG の設定をする。

2. AppDelegate に設定追加

AppDelegate.swift に以下を記入する。

import XCGLogger

let log: XCGLogger? = {
    #if DEBUG
        let log = XCGLogger.defaultInstance()
        log.xcodeColorsEnabled = true
        log.xcodeColors = [
            .Verbose: .lightGrey,
            .Debug: .darkGrey,
            .Info: .darkGreen,
            .Warning: .orange,
            .Error: XCGLogger.XcodeColor(fg: UIColor.redColor(), bg: UIColor.whiteColor()),
            .Severe: XCGLogger.XcodeColor(fg: (255, 255, 255), bg: (255, 0, 0))
        ]
        log.setup(.Verbose, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil, fileLogLevel: .Debug)
        return log
    #else
        return nil
    #endif
}()


@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  .....

色とかは自分の好きなように変えれる。
DEBUG では log の設定を行い、 DEBUG でない時は return nil している。

3. log?.xxxx() で出力

log は global になっているので、どこからでも呼べる。
optional のため ? をつける。
PRODUCTION では nil のため実行されずログが出力されない。

log?.verbose("verbose")
log?.debug("debug")
log?.info("info")
log?.warning("warning")
log?.error("error")
log?.severe("severe")
print("print")

4. XCode Plugin を入れる

Alcatraz 使って XCode Plugin を入れる。
Alcatraz 入れてない人は Alcatraz 初期設定と、とりあえず入れとくと良いプラグインの紹介 を見て入れる。

5. 結果

こんな感じでログが出てめでたい :congratulations:

AppDelegate_swift.png

29
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
29