この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
OSLog
OSLog は iOS 10 から新たに追加された、ログを出力するためのクラスです。
サンプルコードが以下のページで公開されていますので、これを参考にしながら使ってみたいと思います。
基本的な使い方
以下のような感じで使います。
// インポートして
import os.log
// OSLog のインスタンスを生成して
let log = OSLog(subsystem: "jp.classmethod.SampleMobileApp", category: "UI")
// os_log 関数を呼び出す
os_log("ログです", log: log, type: .default)
使い方はとっても簡単です。まず os.log
をインポートすることで OSLog の機能を使えるようにします。次に OSLog
をインスタンス化します。引数の subsystem
はアイデンティティです。逆ドメインなどにします。iOS の場合は、アプリの Bundle ID で良いと思います。category
は出力するログのカテゴリです。ログの先頭に [カテゴリ名]
のような感じで出力されるようになります。
os_log
はログを出力する関数です。第1引数はログのメッセージ、第2引数の log
は先ほど作成したような OSLog インスタンス、第3引数の type
はログレベルです。.default
/ .info
/ .debug
/ .error
/ .fault
から選んで設定します。
ログを出力してみる
それでは、試しに View Controller でログを出力してみましょう。適当にボタンを作ってアクションを設定します。
各アクションのメソッドに、ログを仕込みます。
ViewController.swift
import UIKit
import os.log
class ViewController: UIViewController {
static let log = OSLog(subsystem: "jp.classmethod.SampleMobileApp", category: "UI")
@IBAction func defaultButtonDidTouch(_ sender: AnyObject) {
os_log("デフォルトボタン押したよ", log: ViewController.log, type: .default)
}
@IBAction func infoButtonDidTouch(_ sender: AnyObject) {
os_log("インフォボタン押したぜ", log: ViewController.log, type: .info)
}
@IBAction func debugButtonDidTouch(_ sender: AnyObject) {
os_log("デバッグボタン押したわよ", log: ViewController.log, type: .debug)
}
@IBAction func errorButtonDidTouch(_ sender: AnyObject) {
os_log("エラーボタン押したで", log: ViewController.log, type: .error)
}
@IBAction func faultButtonDidTouch(_ sender: AnyObject) {
os_log("フォールトボタン押したぞえ", log: ViewController.log, type: .error)
}
}
デバッグして、各ボタンをタップしてみます。コンソールに出力されました!
まとめ
Logger と言えば、CocoaLumberjack や SwiftyBeaver などが有名で優秀です。OSLog のポイントはカテゴリやログレベルですが、こういったログを出力する機能が標準の SDK だけで行えるのは魅力的ですね。
本記事では簡単なログ出力だけ取り上げましたが、ログを見る方法は以下の公式ドキュメントが詳しいです。こちらもあわせてご覧いただけると、より理解が深まると思います。