【Swift】 OSLogを使ったログ出力

iOS, Swift

はじめに

こんにちは。iOSアプリ開発グループの神山です。

開発時にログを出したい際に、 print()を使用したり、 SwiftBeaverなどのライブラリを使用したり様々な方法があると思います。

今回はiOS14以降で使用できるLoggerも含めて、OSLogを使ってログを出力する方法をご紹介したいと思います。

OSLogでのログ出力

ログを出力する際には os_logを使いやすいように拡張して、以下のようなものを作成していました。

これらは以下のような形で呼び出して情報を出力することができます。

拡張することで呼び出したファイル、関数、行数なども表示できました。

Loggerでのログ出力

iOS14以降で使用できるLoggerではより直感的に柔軟な出力をすることができます。

例えば、機密情報の場合はログに出力したくない場合もあるかと思います。デフォルトでは動的な値はprivateに設定されていますが、意図的に特定の値をコンソールに公開しないためにはコードで設定をする必要があります。

以下はLoggerとos_logのそれぞれで設定した場合の違いになります。

このようにLoggerの方が直感的に記述できることがわかるかと思います。

ログの確認方法

Xcodeのコンソールにも出力されますが、 Console.appから確認することもできます。
上記のプライベートで設定したログがどのように表示されているか確認してみましょう。

まずコンソールアプリを開きます。

image-20220616120025602.png

使用する端末を選択し、開始ボタンを押します。

SettingConsole.png

Xcodeからアプリを起動して実際にログを送ってみます。
今回は以下のログを送ります。

コンソールを確認するとログが出力されました。

ただ、Xcodeからアプリを起動している際はログの設定をプライベートにしても情報は出力されます。

Log.png

では、Xcodeのアプリを終了してXcodeを経由せず、そのままアプリを起動してログを送ってみましょう。

LogPrivate.png

無事にプライベートの情報を表示させないようにすることができていますね。

※ Simulatorではなく実機でないとプライベートにならないのでご注意ください。

さいごに

OSLogは今回紹介したコンソールへの情報を可視させるか以外にも様々な機能が提供されています。

まだまだ調べ切れていないところが多いですが、ログはバグを発見する手がかりになったりと開発する上で非常に重要なものでもあるので今後も引き続き理解を深めていきたいと思います。

最後まで記事を読んで頂き、ありがとうございました。

参考文献

apple document(Logger)

OSLog and Unified logging as recommended by Apple

この記事を書いた人

神山義仁
神山義仁
iOSエンジニアです。

iOS, Swift