[iOS 10] OSLog でアプリログを出力する
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 でログを出力してみましょう。適当にボタンを作ってアクションを設定します。
各アクションのメソッドに、ログを仕込みます。
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 だけで行えるのは魅力的ですね。
本記事では簡単なログ出力だけ取り上げましたが、ログを見る方法は以下の公式ドキュメントが詳しいです。こちらもあわせてご覧いただけると、より理解が深まると思います。