SwiftyBeaverは、Swiftのためのログプラットフォームです。
今までプライベートベータだったのが、パブリックオープンしたようなので早速触ってみました。
SwiftyBeaverとは
SwiftyBeaverは、開発段階からリリース後まで一貫してログを参照することができるようにするものです。
iOSクライアントからSwiftyBeaverプラットフォームにログをアップして、アップされたログを専用のMacアプリで見ることができます。(他にもログのXcodeのコンソールやファイルへの出力もあります。)また、SwiftyBeaverにアップされるログは全て暗号化され送信されます。この暗号化による安全性のおかげで、規約がたくさんありそうな医療機関や大きな企業でも実際にプロダクションで導入されているようです。
Seb Kreutzbergerさんという、Wunderlistの元CEO/CTOの方が作っています。
セットアップ方法
iOSアプリへの導入はかなり簡単です。Carthage、CocoaPods、Swift Package Managerでの導入がサポートされています。今回は、CocoaPodsで使ってみました。
pod 'SwiftyBeaver'
let log = SwiftyBeaver.self
let console = ConsoleDestination()
let file = FileDestination()
file.logFileURL = NSURL(string: "file:///tmp/swiftybeaver.log")!
let platform = SBPlatformDestination(
appID: "hogehoge",
appSecret: "hogehoge",
encryptionKey: "hogehoge")
log.addDestination(console)
log.addDestination(file)
log.addDestination(platform)
これだけでまずは使うことができます *\(^o^)/*
AppDelegateあたりで、SwiftyBeaverの参照を持たせて、アプリの各所で log
を使いまわします。
ログ
上記でセットアップしたようにログの確認方法が3つ(Xcode, ファイル, Macアプリ)用意されています。また、ログレベルとして、verbose
、debug
、info
、warning
、error
の5つがあります。
log.verbose("verbose")
log.debug("debug")
log.info("info")
log.warning("warning")
log.error("error")
このコードがどのようにそれぞれの確認方法で出力されるのか見ていきたいと思います。
Xcodeコンソールへの出力
この方法は、従来のXcode上でのログ確認とほぼ同じです。
ドキュメント内には、ログに色を付けるプラグインやログの内容から該当ファイルへリンクを張るプラグインも紹介されています。
ファイル
ログをファイルに書き出すこともできます。
上記のAppDelegate
のコードでは、macOS用アプリ開発に限り、 tmp
ディレクトリにswiftybeaver.log
という名前でログを溜め込んでいるため、tailコマンドが使えます。
$ tail -f /tmp/swiftybeaver.log
iOSアプリ開発ではアプリはサンドボックス内のファイルにしかアクセス出来ないため、サンドボックス内のLibrary/Cacheにログが出力されます。
SwiftyBeaver Platform (Macアプリ)
最後に、SwiftyBeaverの大きな特徴であろうSwiftyBeaverへログをアップし、Macのアプリで確認する方法です。
上記のAppDelegate
のように、appID
、appSecret
、encryptionKey
を設定してSBPlatformDestination
を初期化します。これらの値は、SwiftyBeaverのMacアプリをダウンロードして、左のギアアイコンから取得することができます。
AppleのAppID等とは関係ないので注意です。
Macアプリでは簡単にデバイスのIDごとにログを絞り込めたり、より詳しい情報がキレイに見れます。
参考
The release of the SwiftyBeaver Logging Platform — SwiftyBeaver Blog — Medium
https://medium.com/swiftybeaver-blog/the-release-of-the-swiftybeaver-logging-platform-5c0447eda749
SwiftyBeaver Github
https://github.com/SwiftyBeaver/SwiftyBeaver
Log to Xcode Console - SwiftyBeaver Docs
http://docs.swiftybeaver.com/article/9-log-to-xcode-console
Log to File - SwiftyBeaver Docs
http://docs.swiftybeaver.com/article/10-log-to-file
Log to SwiftyBeaver Platform - SwiftyBeaver Docs
http://docs.swiftybeaver.com/article/11-log-to-swiftybeaver-platform
SwiftyBeaver Logging Platform - Product Hunt
https://www.producthunt.com/tech/swiftybeaver-logging-platform