ボクココ

少人数でのサービス開発運営に関するテックブログ

Swift アプリでどんなケースでもログを出す方法

ども、@kimihom です。

iOSアプリの開発をしていると、以下のようなケースでログが見れないことに不便さを感じることがある。

  • バックグラウンドで動作している時のログを見たい
  • iOS の電源を再起動した後のログを見たい
  • その他 アプリを開いた状態 以外でのログを見たい

これらのケースでログを見ることはできないと諦めていたのだけど、調べると方法があったのでまとめておく。

OSLog の利用

シンプルに1つのクラスを作るのが良さそうだ。

import os

class MyLog {
    static let nsLog = OSLog(subsystem: "jp.co.myapp", category: "ログ")

    static func p(_ log: String) {
        os_log("%@", log: nsLog, type: .default, log)
    }
}


// 実際の利用
MyLog.p("sample")

まず、このログが Xcode でのアプリ実行で出力される通常のログを確認しよう。

MyApp[29609:10452863] [ログ] sample

というようなログが出ていればOKだ。

他の方法でログを見る

Xcode 13 でのログ確認の方法

Xcodeメニュー > Window > Devises and Simulators > iPhoneを選択 > Open Console

コンソールアプリを起動する方法

Mac メニューより "コンソール" を起動 > デバイスを iPhone に指定


その後、検索に "ログ" として 開始 を押す。

すると、このコンソールでのログに、出力されるようになる。これによって、どんな状態でもログを確認することができるようになった。

"ログ" と日本語のカタカナで指定した理由はここで、"log" とかで指定すると大量のiPhoneのログが出てきてしまうことになる。

終わりに

アプリのログだけだとどうしても見れなくて困ったケースがあり、同じように悩んだ方は是非試してみていただければと思う。

引き続きiOSアプリ開発を続けていこう。