LoginSignup
51
48

More than 5 years have passed since last update.

NSLogger でデバッグする

Last updated at Posted at 2012-08-31

概要

NSLogger
https://github.com/fpillet/NSLogger

NSLogger Wiki
https://github.com/fpillet/NSLogger/wiki/

Screenshot from Github: Screenshot

  • Mac 上のビューアアプリ NSLogger.app に端末からログを送信、Xcode に繋がなくてもリアルタイムで確認できる
  • 端末が LAN (Bonjour) 内のどこにいてもログを集められる。対応アプリをただ端末に入れておけばいい
  • 通信には SSL も使える
  • プロジェクトに3つのソースファイルを追加してから、NSLog() の感覚でログ送信するだけ
  • OS X / iOS どちらのプロジェクトでも使える。Android にも対応している?
  • ログレベルを設定できる
  • 画像データを画像として表示できる

準備

Github から NSLogger ソース一式を落としてきて、ビューアアプリをビルドする。NSLogger.xcodeproj を開いて Run を実行。Code sign のエラーが出たらDon't Code Sign に変更してビルド。詳細は こちらを参照。

出来上がった NSLogger.app を /Applications/ なりにおいておく。

NSLogger.app の設定

環境設定の Network タブには Bonjour service name やポート番号の設定があるので、適当に設定する。
"Apply" で反映することを忘れずに。

Bonjour service name

初期状態ではコンピュータ名が使われるので、それが嫌なら自分で空欄を埋める。おそらく英数でないといけない。

ポート番号

初期状態では適当に割り振られているので、それが嫌なら自分で空欄を埋める。

"Publish Bonjour service…"

チェックを入れておく。

組み込む 1

Xcode プロジェクトの Edit Scheme… > Pre-actions > Run Scriptopen -g -a NSLogger を記述しておくと自動起動する。
これをしなくても、自分で NSLogger.app を起動させておけばよい。

以下3ファイルをプロジェクトに追加:
1. LoggerCommon.h
2. LoggerClient.h
3. LoggerClinet.m

以下のフレームワークをプロジェクトに関連づけ:
1. CFNetwork.framework
2. SystemConfiguration.framework

参考: NSLoggerで手軽にログを取る方法について

組み込む 2

AppDelegate なりで事前準備をする。

ホスト名とポート番号を指定する

ホスト名(ビューアアプリを動かす Mac の名前)は、"Bonjour service name" に設定した名前と同じものを設定する。ポート番号も同様。

ホスト名とポート番号
LoggerSetViewerHost(NULL, (CFStringRef)@"NSLoggerHost", (UInt32)12345);
オプションを設定する

SSL を使うとか Bonjour を使うとか。

オプション
LoggerSetOptions(NULL, kLoggerOption_BufferLogsUntilConnection |
                    kLoggerOption_UseSSL | // SSL 使う
                    kLoggerOption_BrowseBonjour | // Bonjour 使う
                    );

ログ送信

NSLog() の感覚でログ送信ができるが、API がいろいろ用意されている。ビューアアプリは送信されたメッセージを受け取ると、上記のスクリーンショットようなウインドウを表示する。

文字列

もっとも単純なものは、NSLog() のようにメッセージ送信するもの。
NSLog() と同じく、フォーマットや __PRETTY_FUNCTION____LINE__ も使える。

文字列を送信する
LogMessage(NSString *tag, int level, NSString *format);
画像

画像の横幅、縦幅、画像データ(NSData)を引数に与えると、ビューア側で画像として表示される。

画像を送信する
LogImageData(NSString *tag, int level, int width, int height, NSData *data);

その他、詳細は こちらを参照

51
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
48