マイコン用にログを整形して表示するC言語のライブラリを作りました。 簡単に使えます。

つくりました

以前から自分用に使っていたものをライブラリっぽくまとめてみました。

Githubで公開しています。

Guthub:idt12312/IDLOG

名前がどうにも浮かばなかったので、とりあえず自分の名前を付けておきました。

使用例

ソース

#define IDLOG_ENABLE
#define IDLOG_MODULE_NAME "module1"
#define IDLOG_LEVEL IDLOG_LEVEL_DEBUG
#include "idlog.h"

void module1_proc()
{
    // modeule1.cのmodule1_pricという関数に入ったことをログとして出力する
    IDLOG_DEBUG_FUNCTION_ENTER();
    
    // ログメッセージの出力
    IDLOG_ERROR("error message");
    IDLOG_WARNING("warning message");
    IDLOG_INFO("info message");
    IDLOG_DEBUG("debug message");
    
    // バイナリデータの16進数ダンプ
    const uint8_t test_data[] = {0x11, 0x22, 0x33, 0xAA, 0xBB};
    IDLOG_INFO_HEXDUMP(test_data, 5);

    // modeule1.cのmodule1_pricという関数を出ることをログとして出力する
    IDLOG_DEBUG_FUNCTION_EXIT();
}

出力

[module1:DBG] 1001 Enter module1_proc() module1.c:19
[module1:ERR] 1002 error message
[module1:WRN] 1003 warning message
[module1:INF] 1004 info message
[module1:DBG] 1005 debug message
[module1:INF] 1006 11 22 33 AA BB
[module1:DBG] 1007 Exit module1_proc() module1.c:32

※1001や1002といった数字はタイムスタンプを意味しています。

特徴

次のような情報を表示することができます。

  • printfのようなフォーマット付き文字列を表示
  • バイナリデータの16進数表示
  • 関数に入った、出たを表示
  • タイムスタンプを表示

また、ログを見やすくするために次のような機能もあります

  • どのモジュール(ファイル)から出力されたものなのかを表示できる
  • ログの出力レベルを設定可能(ERROR, WARNINGは表示するがINFO, DEBUGは表示しない)

ログを最終的に出力する関数は自分で作ったものを登録することができます。 例えばマイコンのUARTから出力する関数を登録してやれば、 UARTからログを出力すrことができます。

おわりに

詳細はGithubのリポジトリに書いてあるので、そちらを見てください。

Guthub:idt12312/IDLOG

意見やコメントを募集しています。