CocoaLumberjackを使ってdebug ipaでログを保存する

ipaファイルを作成してsqaにテストを任せ、アプリがクラッシュしてしまった際 にどこでクラッシュしているのかログで確認できると修正が早く行えます。

ipaをdebugにすればログ出力されるものだと思ったいたのですが、試してみたところログが出力されなかったのでCocoaLumberjackを使ってアプリ内にログを保存するという方式をとることにしました。

コード

AppDelegate

AppDelegateに以下のような記述を行います。こちらのサイトを参考にさせていただきました。

import CocoaLumberjack

... 省略

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        dynamicLogLevel = DDLogLevel.verbose
        DDLog.add(DDTTYLogger.sharedInstance)
        
        let fileLogger = DDFileLogger()
        fileLogger.rollingFrequency = 60 * 60 * 24
        fileLogger.maximumFileSize = 1024 * 1024
        fileLogger.logFileManager.maximumNumberOfLogFiles = 10
        DDLog.add(fileLogger)
        
        return true
    }

ログ出力

あとは任意の場所でDDLogDebugを使ってログ出力をするだけです。

このログデバッグはリリースビルドには含める必要がない為DEBUG時のみに設定しています。

#if DEBUG
DDLogDebug("Hello World!")
#endif

fastlaneでipa作成時でたエラー

fastlaneでipaを作成しようとしたのですが以下のようなエラーがでました。

error: SWIFT_VERSION '5.0' is unsupported, supported versions are: 3.0, 4.0, 4.2. (in target 'CocoaLumberjack')

解決策としてはPodsを選択してCocoaLumberjackのSwift Language Versionを4.2に設定し直してあげることでipaを正常に吐き出すことができました。

circle ciでも同じエラーが出た!

Swift Language Versionを修正してGithubにpushしたのですが同じようにエラーが出ました。

error: SWIFT_VERSION '5.0' is unsupported, supported versions are: 3.0, 4.0, 4.2. (in target 'CocoaLumberjack')

Swiftのversionを定義している部分が思いつかず結構ハマっていましたが、問題はCocoaPodsの中に定義しているライブラリのversionを指定していないことでした。

2019/6/5日現在CocoaLumberjackのversionは3.5.3でSwift5に対応済みでした。

はじめは以下のようにpodファイルの中に定義をしてライブラリを使っていました。

pod 'CocoaLumberjack/Swift'

バージョンを指定しないとSwift5に対応済みの3.5.3が自動的に入ってしまう為、Swift5に対応前のversionを以下のように指定することでcircle ciのビルドが通るようになりました。

pod 'CocoaLumberjack/Swift', '3.5.1'

参考文献

iPhoneアプリの実機動作確認中にログを残す「CocoaLumberjack」

How to fix “SWIFT_VERSION ‘3.0’ is unsupported, supported versions are: 4.0, 4.2, 5.0” error in Xcode 10.2?

How to set Swift version 5 (for recent dev snapshots) in Xcode build settings?

carthage SWIFT_VERSION ‘5.0’ is unsupported, supported versions are: 3.0, 4.0, 4.2.エラー

Swift

前の記事

二値化