NLog Target Extension(その4)

次回ではNLogを使って実際にログを出力してみよう。

    using (IsolatedStorageFile store =
            IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (Stream stream =
            new IsolatedStorageFileStream("Mandarine.log"
                , FileMode.Append, FileAccess.Write, store))
        {
            var writer = new StreamWriter(stream);
            writer.WriteLine(this.Layout.Render(logEvent));
            writer.Close();
        }
    }

IsolatedStorageFileにより出力された"はず"のログだが、Windows Phone 7は内部のファイルシステムに直接アクセスするAPIがサポートされていないため、これをエミュレータや端末から簡単に見る術は無い。しかし、それではデバッグができないので専用のツールが用意されている。

ISETool.exe

How to: Use the Isolated Storage Explorer Tool - MSDN Lirary

ISEToolはIsolatedStorageFile内のデータのスナップショットを取得したり復旧したりするツール。スナップショットという言い方が分かり難いが、Androidで言うところの"adb pull/push <ファイル>"に相当するものであり、今回の場合、Isolated Storageの内容をダウンロードして内容を確認する。

ログの採取

NLogのイディオムを使用してログを出力する

NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info("NLogでログを出力してみよう");
ISEToolによりIsolated Storageのスナップショットを取得

エミュレータで前述のコードを実行後、isetoolによりIsolatedStorageの内容を取得する。

>isetool ts xd  e:\temp


見事IsolatedStorageにログが採取されている。

このままだとどんどんとサイズが膨らむので、ファイルのローリングなども考えなくてはなるまい。