NSLogを過去にする
CocoaLumberJack
ios_社内LT

内定者 - 羽田(ジャンボ) - @jumbOS5
3/27
NSLogで満足してるんですか?
今までのNSLog
↓
マクロで色々書く・・・
マクロって何?柔軟じゃなくない?
マグロといえば
備長炭火焼 "jige" 築地店
骨付きマグロの中落ちが
絶品だそうです・・・
行きたひ(๑́‫`ڡ‬๑)
ログを使えよエンジニア
• 好みの形式のログを取りたい!
• リリースビルドではログを出したくない!
• ログファイルをつくりたい!
• 外部サービスには頼りたくない!
• pod使ってる!
CocoaLumberJack
CocoaLumberJack
podで入れる事のできるOSSのログ管理ライブ
ラリ、「リリース時はログを出力しない」「独
自フォーマットでのログの出力」「ログの保存」
などなどを簡単に作れる。
*ちなみにlumberjackは「きこり」という...
導入
1. pod CocoaLumberjack'
2. pod install
3. ソースをちょっと書く
「独自フォーマットでログを出力し、指定ディレクトリに保存。
リリースビルド時には表示されないようにすることを目的とする」
手順
手を加えるソース
1. Appdelegate
2. xxx-Prefix.pch
3. 独自フォーマットクラス <- 作る
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// コンソールログ
...
xxx-Prefix.pch//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source
...
独自フォーマットクラス
https://github.com/CocoaLumberjack/
CocoaLumberjack/wiki/CustomFormatters
- (NSString *)formatLogMessage:(DDLo...
使い方
• 独自フォーマットクラスのimport
• ログの出力

DDLogError(@"Paper Jam!");
DDLogWarn(@"Low toner.");
DDLogInfo(@"Doc printed.");
DDLogDe...
結果とデモ
!
2014/03/25 11:22:35 (60b) E [CLTViewController(20) viewDidLoad] Paper Jam!
2014/03/25 11:22:35 (60b) W [CLTViewCon...
まとめ
pod時代のFlexible Loggerである
CocoaLumberJack!!
いつ使うの!!!!?????
(|3[___]
時間のある時にやってみてください・・・zzz
https://github.com/jumbo-in-Jap/cocoalumberjackTest
サンプルとか置いときます。
発展
+ +
_人人人人人人人人人人人_
> すごいログシステム <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
ストリームデータのiosアプリから出るログをストリームで取得、mongoDBにリアルタイム
で入れて集計、「キー(メソッドとか)ご...
次回予告
内定者 正社員
Evolution.
AutoLayout - Live Coding

7.1からのいじりどこ 

coming soon…
Upcoming SlideShare
Loading in …5
×

Cocolumberjackの使い方 Ios lt 20140327

2,408 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,408
On SlideShare
0
From Embeds
0
Number of Embeds
677
Actions
Shares
0
Downloads
3
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Cocolumberjackの使い方 Ios lt 20140327

  1. 1. NSLogを過去にする CocoaLumberJack ios_社内LT
 内定者 - 羽田(ジャンボ) - @jumbOS5 3/27
  2. 2. NSLogで満足してるんですか? 今までのNSLog ↓ マクロで色々書く・・・ マクロって何?柔軟じゃなくない?
  3. 3. マグロといえば 備長炭火焼 "jige" 築地店 骨付きマグロの中落ちが 絶品だそうです・・・ 行きたひ(๑́‫`ڡ‬๑)
  4. 4. ログを使えよエンジニア • 好みの形式のログを取りたい! • リリースビルドではログを出したくない! • ログファイルをつくりたい! • 外部サービスには頼りたくない! • pod使ってる! CocoaLumberJack
  5. 5. CocoaLumberJack podで入れる事のできるOSSのログ管理ライブ ラリ、「リリース時はログを出力しない」「独 自フォーマットでのログの出力」「ログの保存」 などなどを簡単に作れる。 *ちなみにlumberjackは「きこり」という意味
  6. 6. 導入 1. pod CocoaLumberjack' 2. pod install 3. ソースをちょっと書く 「独自フォーマットでログを出力し、指定ディレクトリに保存。 リリースビルド時には表示されないようにすることを目的とする」 手順
  7. 7. 手を加えるソース 1. Appdelegate 2. xxx-Prefix.pch 3. 独自フォーマットクラス <- 作る
  8. 8. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // コンソールログ DDTTYLogger *ttyLogger = [DDTTYLogger sharedInstance]; ttyLogger.logFormatter = [[CLTCustomFormatter alloc] init]; [DDLog addLogger:ttyLogger]; // ファイル出力ログ // ログファイル保存場所 NSString *logPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Logs/"]; DDLogFileManagerDefault *logFileManager = [[DDLogFileManagerDefault alloc] initWithLogsDirectory:logPath] self.fileLogger = [[DDFileLogger alloc] initWithLogFileManager:logFileManager]; self.fileLogger.logFormatter = [[CLTCustomFormatter alloc] init]; // ログファイル最大サイズ:10MB self.fileLogger.maximumFileSize = 10 * 1024 * 1024; // ログファイル最大個数:5個 self.fileLogger.logFileManager.maximumNumberOfLogFiles = 5; [DDLog addLogger:self.fileLogger]; DDLogInfo(@"%@", self.fileLogger.logFileManager.logsDirectory); ! return YES; } Appdelagete
  9. 9. xxx-Prefix.pch// // Prefix header // // The contents of this file are implicitly included at the beginning of every source file. // ! #import <Availability.h> #import <CocoaLumberjack/DDLog.h> #import <CocoaLumberjack/DDTTYLogger.h> #import <CocoaLumberjack/DDLog+LOGV.h> #import <CocoaLumberjack/DDASLLogger.h> ! #ifndef __IPHONE_5_0 #warning "This project uses features only available in iOS SDK 5.0 and later." #endif ! #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #endif ! #ifdef DEBUG // デバッグ時は全レベルのログを表示する static const int ddLogLevel = LOG_LEVEL_VERBOSE; #else // リリース時はログを表示しない static const int ddLogLevel = LOG_LEVEL_OFF; #endif
  10. 10. 独自フォーマットクラス https://github.com/CocoaLumberjack/ CocoaLumberjack/wiki/CustomFormatters - (NSString *)formatLogMessage:(DDLogMessage *)logMessage { NSString *logLevel; switch (logMessage->logFlag) { case LOG_FLAG_ERROR : logLevel = @"E"; break; case LOG_FLAG_WARN : logLevel = @"W"; break; case LOG_FLAG_INFO : logLevel = @"I"; break; case LOG_FLAG_DEBUG : logLevel = @"D"; break; default : logLevel = @"V"; break; } NSString *dateAndTime = [self stringFromDate:(logMessage->timestamp)]; NSString *logMsg = logMessage->logMsg; NSString *fileName = logMessage.fileName; NSString *methodName = logMessage.methodName; int lineNumber = logMessage->lineNumber; NSString *threadID = logMessage.threadID; return [NSString stringWithFormat:@"%@ (%@) %@ [%@(%d) %@] %@", dateAndTime, threadID, logLevel, fileName, lineNumber, methodName, logMsg]; }
  11. 11. 使い方 • 独自フォーマットクラスのimport • ログの出力
 DDLogError(@"Paper Jam!"); DDLogWarn(@"Low toner."); DDLogInfo(@"Doc printed."); DDLogDebug(@"Debugging"); DDLogVerbose(@"Init doc_parse”);
  12. 12. 結果とデモ ! 2014/03/25 11:22:35 (60b) E [CLTViewController(20) viewDidLoad] Paper Jam! 2014/03/25 11:22:35 (60b) W [CLTViewController(21) viewDidLoad] Low toner. 2014/03/25 11:22:35 (60b) I [CLTViewController(22) viewDidLoad] Doc printed. 2014/03/25 11:22:35 (60b) D [CLTViewController(23) viewDidLoad] Debugging 2014/03/25 11:22:35 (60b) V [CLTViewController(24) viewDidLoad] Init doc_parse
  13. 13. まとめ pod時代のFlexible Loggerである CocoaLumberJack!! いつ使うの!!!!?????
  14. 14. (|3[___] 時間のある時にやってみてください・・・zzz https://github.com/jumbo-in-Jap/cocoalumberjackTest サンプルとか置いときます。
  15. 15. 発展 + + _人人人人人人人人人人人_ > すごいログシステム <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ ストリームデータのiosアプリから出るログをストリームで取得、mongoDBにリアルタイム で入れて集計、「キー(メソッドとか)ごとに何件エラーログがあったか?」「infoに出力 された値の合計値の取得」などをJS(MongoShell)で書けるクールな状況。
  16. 16. 次回予告 内定者 正社員 Evolution. AutoLayout - Live Coding
 7.1からのいじりどこ 
 coming soon…

×