【Swift】XCGLoggerの使い方!ログ出力方法とファイルへ保存

この記事からわかること
- SwiftのXCGLoggerの使い方
- ログを出力する方法
- 指定できるログレベル(Level列挙型)の種類
- setupメソッドでオプションを設定する方法
- ファイルに書き込むには?
\ アプリをリリースしました /
参考文献:公式リファレンス:XCGLogger
XCGLoggerとは?
XCGLoggerはSwiftで使用できるiOSまたは macOS向けのログ出力ライブラリです。XCGLoggerを使用することで細かいログレベル(デバッグ、情報、警告、エラーなど)を指定してメッセージを出力し、指定したファイルやコンソールにログを記録することができます。
XCGLoggerの特徴はカスタマイズ性が高く、print
などよりも詳細な情報を簡単に得ることができます。
同じようなログ出力ライブラリにOSLogがあります。
CocoaPodsで導入
XCGLoggerはライブラリなので導入しないと使用することができません。CocoaPodsやCarthageなどの依存関係管理ツールを使用してプロジェクトに導入できます。
CocoaPodsを使用してインストールするきはPodFileに以下を記述します。
あとはpod install
を実行して導入作業は完了です。
使い方
使用するまえにはimport
を忘れないうようにしておきます。
XCGLoggerはコード全体で使用したい場合が多いのでUIKitならAppDelegate.swiftで、Swift UIならプロジェクト名App.swift内でXCGLoggerインスタンスのグローバル定数を宣言します。 インスタンスはシングルトンになっているdefault
プロパティから取得します。
またこの段階でXCGLoggerのオプションを設定しておきます。オプションの細かい説明は後述します。
Swift UIで定義する
Swift UIで定義するには計算プロパティとして「プロジェクトApp.swift」ファイルに記述します。
ログを出力する方法と結果
これでXCGLoggerが使用できるようになり、以下のようなコードでログを記録できます。
出力結果では以下のように日付や時間(タイムスタンプ)、エラーレベル、スレッド、ファイル名:行数、メソッド名などが自動で付与されて出力されます。
オプションの設定方法:setupメソッド
XCGLoggerでのオプションを設定するsetup
メソッドの引数を詳細にみていきます。
level: LogLevel型
ログの出力レベルを列挙型Levelで指定します。指定できるのは以下のとおりです。
ここで指定したログレベル以上のログのみがコンソールに出力されるようになります。例えばデフォルト(.debug
)が指定されている場合はverbose
は出力されなくなり、debug
より上のレベルのみ出力されます。
showThreadName: Bool
スレッド名をログに含めるかどうかを指定します。true
なら含める。
showLevel: Bool
ログのレベルをログに含めるかどうかを指定します。true
なら含める。
showFileNames: Bool
ログを出力したファイル名をログに含めるかどうかを指定します。true
なら含める。
showLineNumbers: Bool
ログを出力した行番号をログに含めるかどうかを指定します。true
なら含める。
writeToFile: String?
ログをファイルに書き込む場合のファイルパスを指定します。指定すると、コンソールへの出力だけでなく指定したファイルにも書き込まれるようになります。
ファイルパスは相対パスや絶対パスで指定することができますが、相対パスだと実行環境によって変化する可能性があるので絶対パスを指定した方がわかりやすいかもしれません。またログファイルの自動生成生成機能はないためあらかじめファイルを作成しておく必要があります。
fileLevel: LogLevel型
ファイルに書き込むログのレベルを指定します。
ファイルに書き込んでみる
実際にファイルに書き込んでみたいと思います。今回はわかりやすくTestFirebase.xcworkspace
と同階層(プロジェクトのルートディレクトリ)へ設置してみたいと思います。writeToFile
に指定するパスをプロジェクトのルートパス/ログファイル名
にしてみます。

出力するインスタンスの文字列表現を変更する
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。