🛠️

C言語のログ(logging:ロギング)処理(3)

1 min read

ロギングライブラリをチョイスしてみたものの

zlog のドキュメントを日本語翻訳して読めば読むほど現在の自作ロギングを少しレベルアップすれば良くない?と自問自答。
初心に戻って作ってみるかと決断。
zlog の良い仕様は取り入れて自作といえども少しリッチにOpenSourceでもないので自己満足ゴリゴリ仕様で作成します。

日付フォーマット

ログ出力時間を書き出す日付フォーマットはマイクロ秒まで出力するので以下の定義

// 日時文字列フォーマット YYYY-MM-DD HH:MM:SS.ssssss
#define	LOG_DATETIME_FORMAT	"%04d-%02d-%02d %02d:%02d:%02d.%06d"

ログレベル

現在の自作ロギングは、INFO, WARN, ERROR の3つだったので6つに拡充

#define		LOG_LEVEL_TRACE		(0)	// トレース
#define		LOG_LEVEL_DEBUG		(10)	// デバッグ
#define		LOG_LEVEL_INFO		(20)	// インフォメーション
#define		LOG_LEVEL_WARN		(30)	// ワーニング
#define		LOG_LEVEL_ERROR		(40)	// エラー
#define		LOG_LEVEL_FATAL		(50)	// フェータル

メッセージ定義

現在の自作ロギングは、メッセージ定義をハードコーディングしていたのでメッセージ定義をハードコーディングとメッセージファイルの2Wayにする。
ハードコーディングからメッセージファイルがジェネレートできるようにツールを作る。
そうすることでコーディング時はIDEエディタのサジェスチョンで表示されるメッセージをみながらコーディングするのでエラーを防ぐことができる
ソースコードをこうやって書いて

#define	M000001	"M000001,A system call error occurred: FUNC=[%s]"
#define	M000002	"M000002,A system call error occurred: FUNC=[%s] ERRNO=[%d]"
#define	M000003	"M000003,A system call error occurred: FUNC=[%s] ERRNO=[%d] FILE=[%s]"

メッセージファイルをこうやって書く

{
	"LOG_ID": "M000001",
	"LOG_MSG": "A system call error occurred: FUNC=[%s]"
},
{
	"LOG_ID": "M000002",
	"LOG_MSG": "A system call error occurred: FUNC=[%s] ERRNO=[%d]"
},
{
	"LOG_ID": "M000003",
	"LOG_MSG": "A system call error occurred: FUNC=[%s] ERRNO=[%d] FILE=[%s]"
},

この先

コーディング始めたばかりで、まだ先は長そうですがブログとともにコツコツ書いていきます。また、次回へ

Discussion

ログインするとコメントできます