C言語で色付きログを出力したくなった時のために


コンソールに引き籠もっている時に、色気が欲しくなった場合に備えてgithubにコードをあげておく。

何ができるのか

console(ターミナルソフト)で色付きのログを出すことができる。(ただし、16色まで)
mac,cygwinで動作確認済み。多分linuxでも動くはず。

とりあえず、使い方

git hubに上げてあるので以下で取得

$ git clone https://github.com/tksmiura/color_log

使うのはcolor_log.hとcolor_log.cのみ、
適当に自分のプロジェクトに取り込んで下さい。
サンプルのビルド方法は、

$ gcc -o test test.c
$ gcc -o test2 test2.c color_log.c

色をつけるエスケープシーケンスをマクロ(文字列)にしているので、色付きの出力はこんな感じでできます。

#inclue "color_log.h"

    printf(COLOR_FG_LRED "COLOR_FG_LRED" COLOR_RESET "\n");
...

testを実行すると色の一覧が出ます。

関数とマクロを使って以下のようにすることも可能

    log_printf(LOG_LEVEL_INFO, "[this is info]");

    WARN_LOG("WARN_LOG log.....\n");

こちらは、

  • コンソール以外では、エスケープシーケンスが出ないように制御(isatty())
  • コンソールの場合、コンソールの幅でカットすることで1行以上にならないようにする(ASCII文字以外非対応、ioctl )

ということをやっています。

test2がサンプルです。| catでパイプすると色が出ません。(ただし、emacsのシェルでは上手く動作せず、、、orz)

参考

https://www.serendip.ws/archives/4635
https://www.mm2d.net/main/prog/c/console-02.html
https://qiita.com/hidetzu/items/2978f63e6d9b1848d8fe

課題

できればemacsに引き籠もって一歩も外に出たくない