Swift で日時・クラス名・メソッド名をログ出力したいんだけど、Swift でのログ出力で printlnprint だと日時などは表示されない。
そんなわけで、ログ用の関数を作ってみる。

こんな感じで表示したい

[2015/05/03 11:18:38.741] ViewController(Line:19) -> viewDidLoad()
<UIView: 0x7866e460; frame = (0 0; 320 568); autoresize = RM+BM; layer = <CALayer: 0x7866c4b0>>

グローバル関数を定義する

func Log(object: Any, classFile: String = __FILE__, functionName: String = __FUNCTION__, lineNumber: Int = __LINE__){
    // 日時フォーマット
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy/MM/dd HH:mm:ss.SSS"

    // 日時・クラス名・メソッド名を出力
    println("[\(dateFormatter.stringFromDate(NSDate()))] \(classFile.lastPathComponent.stringByDeletingPathExtension)(Line:\(lineNumber)) -> \(functionName)")

    // 出力したい内容
    println(object)
}

クラス名の取得が難儀だったので、ファイル名から取得することにした。

出力結果

[2015/05/04 2:13:46.931] ViewController(Line:17) -> viewDidLoad()
<LogTest.ViewController: 0x799e6250>

使い方

println と同じ。

Log(self)

Next PostPrevious Post