Swift 2.0 で CocoaPods の CocoaLumberjack を組み込んで使ってみる
動機
iPhone 6Sが発売されて、XCode7が出て、Swift 2になったということで、GPSで位置情報を取得するアプリを書いてみようと思った。バックグラウンドで更新されないので、何故だろうと思って、実機上で、ログファイルを作る必要性がでてきた。
CocoaLumberjack
iOSで、ログファイルを管理するためのライブラリとして、CocoaLumberjackがどうやら結構利用されているので、検索してみると、『 SwiftでもCocoaLumberjack 』と言う記事を見つけて、できるんじゃないか?とやってみた。
CocoaPodsのインストール
$ sudo gem install cocoapods
$ pod setup
PodFileの作成
取り込みたいXCodeのプロジェクトの配下に『PodFile』を置く
pod 'CocoaLumberjack/Swift',
:git => ‘https://github.com/CocoaLumberjack/CocoaLumberjack.git',
:branch => 'swift_2.0'
use_frameworks!
紹介記事には書いていないけど、『use_frameworks!』を追加しないといけません。
ライブラリのインストール
取り込みたいXCodeのプロジェクトの配下で、コンソールで次のコマンドを投入する。
$ pod install
すると、ライブラリのインストールが行われ、『プロジェクト名.xcworkspace』が生成されるので、これをXCode7から開くことにより取り込まれて使える状態になります。
Swiftソース上での書き方
インポートはこんな書き方
import CocoaLumberjack
例えば、viewDidLoad()あたりの処理で、下記のように書くと、コンソールとファイルに書き出されます。
defaultDebugLevel = DDLogLevel.Verbose
DDLog.addLogger(DDTTYLogger.sharedInstance())
let fileLogger = DDFileLogger()
fileLogger.rollingFrequency = 60 * 60 * 24
fileLogger.maximumFileSize = 1024 * 1024
fileLogger.logFileManager.maximumNumberOfLogFiles = 10
DDLog.addLogger(fileLogger)
ログを出したい場所では
DDLogDebug("didUpdateToLocation")
とかやればOKです!
でも。。。
info.plistにApplication supports iTunes file sharingをYESと記述しても、iTunesからログファイルを取得することができない。
あれあれ?
調べてみてみたら、Cacheフォルダに吐き出している事実を発見し、設定で変えられるのかな?と思っていましたが、ライブラリのソースコードを直接書き換えてこの問題をクリアーにしました。コメントアウトした部分がキャッシュフォルダをしていしていたので、ドキュメントフォルダにするように書き直しています。
- (NSString *)defaultLogsDirectory {
#if TARGET_OS_IPHONE
// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *baseDir = paths.firstObject;
NSString *logsDirectory = [baseDir stringByAppendingPathComponent:@"Logs"];
#else
NSString *appName = [[NSProcessInfo processInfo] processName];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? paths[0] : NSTemporaryDirectory();
NSString *logsDirectory = [[basePath stringByAppendingPathComponent:@"Logs"] stringByAppendingPathComponent:appName];
#endif
return logsDirectory;
}
以上、ご参考までに
Author And Source
この問題について(Swift 2.0 で CocoaPods の CocoaLumberjack を組み込んで使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/KazuyukiEguchi/items/79cb93a1bc7dc0b5b9bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .