XCodeColorsを使ってみる

ログ出力時にコンソールに色が付けることができるXCodeのpluginを試してみました。
robbiehanson/XcodeColors

How to install

githubに書いていますが、buildするだけで
以下にプラグインファイルが置かれます。
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XcodeColors.xcplugin

How to use

customマクロを定義する方法とCocoaLumberjackというのを利用する方法が紹介されています。
CocoaLumberjack は、log levelを設定してログの出力内容を分けることができるような
プラグインのようです。
使ったことないので、とりあえずcustomマクロで試してみます。
 
マクロは下記のように記載すればokです。 fg、bgは文字の色、背景色です。
githubの現在のreadmeは間違っているようなのでpull req出しておきました。

#define XCODE_COLORS_ESCAPE @"\033["

#define XCODE_COLORS_RESET_FG  XCODE_COLORS_ESCAPE @"fg;" // Clear any foreground color
#define XCODE_COLORS_RESET_BG  XCODE_COLORS_ESCAPE @"bg;" // Clear any background color
#define XCODE_COLORS_RESET     XCODE_COLORS_ESCAPE @";"   // Clear any foreground or background color

私は下記のようにしてみました

// XCodeColors
// --
// The following is copied from the top of the XcodeColors.m file:
#define XCODE_COLORS_ESCAPE @"\033["
#define XCODE_COLORS_RESET_FG  XCODE_COLORS_ESCAPE @"fg;" // Clear any foreground color
#define XCODE_COLORS_RESET_BG  XCODE_COLORS_ESCAPE @"bg;" // Clear any background color
#define XCODE_COLORS_RESET     XCODE_COLORS_ESCAPE @";"   // Clear any foreground or background color
// --

#ifdef DEBUG
    #define LogBlue(frmt, ...) NSLog((XCODE_COLORS_ESCAPE @"fg70,95,160;" frmt XCODE_COLORS_RESET), ##__VA_ARGS__)
    #define LogRed(frmt, ...) NSLog((XCODE_COLORS_ESCAPE @"fg158,40,74;" frmt XCODE_COLORS_RESET), ##__VA_ARGS__)
#else
    #define LogBlue
    #define LogRed
#endif

こんな感じになります

LogBlue(@"blue test");
LogRed(@"red test");

f:id:rochefort:20131228202621p:plain