職人が教える!iOSアプリ開発で使いこなしたいとっておきのOSS
第2回 アプリ内でログを閲覧するためのライブラリ iConsole
実機で開発中のアプリの動作確認を行う際,
iConsoleはアプリ内でログ閲覧するためのライブラリで,
このようにコンソールライクなウィンドウをアプリ内に表示してログを確認できるようになります。
iConsoleの特徴
アプリ内でログ閲覧できるようにすること自体は
- 出力したい文字列
(=ログ) をプールする - ログを確認するための画面を表示する
という2つの機能が最低限あればよいので,
たとえば,
- 5段階のログレベルを指定することで,
ログ出力量を段階的にコントロールできる - クラッシュ時に自動的にスタックトレースをロギングしてくれる
- コンソール画面の起動方法として,
スワイプでの起動, シェイクでの起動といった機能を備えているので, アプリ本体のUIに変更が不要 - Emailでのログ送信
などなど。詳しい使い方は後述します。
また,
使い方:基礎編
ここでは,
ソースコードを以下のURLよりダウンロード
iConsoleフォルダとGTMフォルダをプロジェクトに追加
メインウィンドウのクラスをiConsoleWindowに変更
MainWindow.
xib がある場合は, Interface Builderからxibの中にあるメインウィンドウのオブジェクトのクラスにiConsoleWindowを指定します。 MainWindow.
xibがない場合は, AppDelegateでiConsoleWindow. hをインポートし, UIWindowをiConsoleWindowに置き換えてください (iConsoleWindow は UIWindow のサブクラスです)。 ログを出力する
ログを出力したいクラスで iConsole.
h をインポートし, - #import "iConsole.
h"
ログを出力したい箇所で,
log: メソッドをコールします。 [iConsole log:@"some message"];
- #import "iConsole.
以上です。
デフォルトの状態では,
使い方:応用編
iConsole.
いくつか重要なものをピックアップします。
#define CONSOLE_ENABLED 1
#define CONSOLE_ENABLED 1
この定数をコメントアウトし,
これにより,
#define LOG_LEVEL LOG_LEVEL_INFO
#define LOG_LEVEL LOG_LEVEL_INFO
出力するログのレベルを指定します。
ログレベルは
#define LOG_LEVEL_NONE 0
#define LOG_LEVEL_CRASH 1
#define LOG_LEVEL_ERROR 2
#define LOG_LEVEL_WARNING 3
#define LOG_LEVEL_INFO 4
と5段階で定義されており,
+ (void)log:(NSString *)format, ...;
+ (void)crash:(NSString *)format, ...;
+ (void)error:(NSString *)format, ...;
+ (void)warn:(NSString *)format, ...;
+ (void)info:(NSString *)format, ...;
の5つが用意されています。
LOG_
また,
#define ADD_CRASH_HANDLER 1
#define ADD_CRASH_HANDLER 1
この定数をオンにすることで,
#define SAVE_LOG_TO_DISK 1
#define SAVE_LOG_TO_DISK 1
この定数をオンにすることで,
#define MAX_LOG_ITEMS 1000
#define MAX_LOG_ITEMS 1000
ログの最大数を指定します。ログはNSMutableArray型のlogプロパティに貯められていくので,
#define LOG_SUBMIT_EMAIL @"xxx@xxx.com"
#define LOG_SUBMIT_EMAIL @"xxx@xxx.com"
ログを Email 送信する際のデフォルト送信先を設定します。
まとめ
アプリ内でログ閲覧できるようになるライブラリ,