この記事では、OSLogを使って、ログをコンソールに表示させたいと思います。iOS14以降、iOS13以下で記述の仕方が違いますが、今回は、iOS14以降のやり方でやっていこうと思います。
そもそもアプリログとは?
アプリログというのは、アプリのを操作した時の情報を蓄積したデータのことです。
今回は簡単にコンソールに表示させていきますが、実は、ストレージにもこのログは蓄積されていきます。
コンソールに表示させるなら、print()でよくねと思う方がいるかと思いますが、OSLogは、print()よりも詳しい情報を取得できます。何時何分何秒に行われたのか、どのような動作をしたのかが確認できます。
OSLogの使い方
ボタンをいくつか配置して、コードに@IBActionで紐付けます。

①ボタンを適当にいくつか配置します。
②それぞれボタンを異なる名前で@IBActionで紐付けます。
ログを定義するファイルを作成します。
command + nで新しいSwiftファイルを作成しましょう。

ファイル名は、今回は適当にOSLog+Logger.swiftにしておきます。
OSLog+Logger.swiftに以下のコードを追加してください。
このように、用途に合わせてカテゴリー分けができます。(今回はuiとnetwork、viewcycleの3つで分けた)
import os
extension OSLog {
static let ui = Logger(subsystem: "com.satoriku.OSLog", category: "ui")
static let network = Logger(subsystem: "com.satoriku.OSLog", category: "network")
static let viewCycle = Logger(subsystem: "com.satoriku.OSLog", category: "viewcycle")
}

ViewController.swiftにもimportしましょう。
import os

ViewDidLoadのブロックの中には、OSLog.viewCycleでログを記載しましょう。
OSLog.viewCycle.log("viewDidLoad()")
ButtonActionのブロックの中には、OSLog.uiでログを記載しましょう。
(ボタン名(defaultsButton)はそれぞれ変えておきましょう。)
OSLog.ui.log("defaultsButtonをタップ")

実行して確認しましょう。

ボタンを押すと、そのボタンを押した時刻とカテゴリーとメッセージが表示されると思います。
さらに、Console.appでも確認してみましょう。
command + スペースで、Spotlightを起動させ、コンソールと入力してアプリを開きましょう。


①左のメニューから今立ち上げてるシミュレーターを選択
②開始ボタンをクリック
③右上にプロジェクト名で検索
以下のように、ボタンを押すと、リアルタイムでログが表示されます。

このような感じで、OSLogを使っていきます。
import os
extension OSLog {
static let ui = Logger(subsystem: "com.satoriku.OSLog", category: "ui")
static let network = Logger(subsystem: "com.satoriku.OSLog", category: "network")
static let viewCycle = Logger(subsystem: "com.satoriku.OSLog", category: "viewcycle")
}
import UIKit
import os
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
OSLog.viewCycle.log("viewDidLoad()")
}
@IBAction func defaultsButtonAction(_ sender: Any) {
OSLog.ui.log("defaultsButtonをタップ")
}
@IBAction func grayButtonAction(_ sender: Any) {
OSLog.ui.log("grayButtonをタップ")
}
@IBAction func filledButtonAction(_ sender: Any) {
OSLog.ui.log("filledButtonをタップ")
}
@IBAction func tintedButtonAction(_ sender: Any) {
OSLog.ui.log("tintedButtonをタップ")
}
}
参考文献

