📱

【Xcode/swift】自作のLoggerクラスを使って簡単便利なトレースログを実装してみる。【ロギング】

2023/07/05に公開

トレースログとは

トレースログとは、アプリで操作した際の情報をXcodeのコンソールに出力するログのことです。OSLogというログ用出力用の仕組みは標準で用意されているようなのですが、今回はprintを用いて自作ログを準備したいと思います。

以下のように、該当の行数やclass名、関数名まで表示してくれるので、どの場所でエラーが発生しているのかがわかりやすいというメリットがあります。

Trace: /Users/anonymous/AppProject/sampleProject/sampleProject/pokemonCardAR/ARView.swift makeUIView(context:) Line:24

さくっと導入したい方や、カスタマイズして使いたい方におすすめなので是非試してみてください!

準備

1.以下のようなLoggerクラスを作成

Loggerクラスを作成します。traceとinfoの二つを作成しましたが、例えばwarningなどログレベルに応じて別途作成しても良いと思います。

私の場合はあくまでも個人開発プロジェクトで使用するログなので、最低限traceさえ出来ればOKでした。

import Foundation

/// Loggerクラス
class Logger {
    /// トレースログ
    static func trace(file: String = #file, line: Int = #line, function: String = #function) {
        let logMessage = "Trace: \(file) \(function) Line:\(line)"
        print(logMessage)
    }

    /// インフォログ
    static func info(_ message: String, file: String = #file, line: Int = #line, function: String = #function) {
        let logMessage = "Info : \(message)(\(file) \(function) Line:\(line))"
        print(logMessage)
    }
}

2.Logger.trace()を呼び出す

必要な箇所でtrace()やinfo()を呼び出すだけです。
以下のようにすれば、Xcodeのコンソール上にログが出力されることを確認できるはずです。

func makeUIViewController(context: UIViewControllerRepresentableContext<SafariView>) -> SFSafariViewController {
    Logger.trace()
    return SFSafariViewController(url: url)
}

3. 出力されたログを確認

アプリを実行して該当の動作を行います。そのタイミングでコンソールに以下のような形式のログが出力されたら無事完了です。

Trace: /Users/anonymous/AppProject/sampleProject/sampleProject/pokemonCardAR/ARView.swift makeUIView(context:) Line:24

おまけ

最近アプリを通じてたくさんの方と知り合えて、日々が楽しく思えるようになりました。

コーディングが楽しい、アイディアを形にするのが嬉しいというのももちろんですが、生活がより豊かになるという側面が開発にはあると思います。色々なモノの見方、視点が変わって面白いです。

Qiitaの投稿、いかがでしたでしょうか?

評判良さそうであれば、今後も開発したアプリについてや開発技術の情報を発信したいと思っています。
皆さんのリアクションが命なので、ぜひコメント等してもらえると嬉しいです!

https://pont.co/u/taminari

Discussion