cmn-clib(CommonLibraryForC)
C言語共通ライブラリ
 全て データ構造 ファイル 関数 変数 型定義 列挙型 列挙値 マクロ定義
CmnLog.c ファイル

標準ログ出力 共通関数 [詳解]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "cmnclib/Common.h"
#include "cmnclib/CmnLog.h"
#include "cmnclib/CmnTime.h"
#include "cmnclib/CmnString.h"

マクロ定義

#define MSG_BUFSIZ   2048
 
#define PARSE_CHAR   ','
 
#define COMMENT_CHAR   '#'
 

関数

int CmnLog_Init (const char *logFile, CMN_LOG_LEVEL level, const char *msgFile)
 標準ログ出力関数初期化処理 [詳解]
 
void CmnLog_End ()
 標準ログ出力共通関数終了処理 [詳解]
 
void CmnLog_Put (int level, const char *msg,...)
 標準ログ出力 [詳解]
 
void CmnLog_PutByCode (CmnLogEx *log, CMN_LOG_LEVEL level, const char *msgCode,...)
 標準ログ出力 [詳解]
 
void CmnLog_InitCmnClibLog (CmnLogEx *log, CMN_LOG_LEVEL level)
 
void CmnLog_EndCmnClibLog ()
 
void CmnLog_PutCmnClibLog (CMN_LOG_LEVEL level, const char *msg,...)
 cmn-clib内部ログ出力 [詳解]
 

詳解

標準ログ出力 共通関数

プロセスの標準ログを出力する。ログの出力先や出力レベルはCmnLog_Initで指定する。 ログを別ファイルに出力したい場合は、拡張ログ出力共通関数を使用することで複数出力先にログを出し分けることが可能。
ログの出力形式はフリーフォーマットの他、ログメッセージ定義ファイルで定義することが可能。
ログ出力メッセージの書式にはprintf書式を使用可能。

<使用例>
— message.conf(メッセージログファイル) ------------------—
C001, テストログs
C002, テストd回目s
-------------------------------------------------------------—

・以下、ログ出力処理例
if ( ! CmnLog_Init("message.conf", CMN_LOG_LEVEL_INFO)) return ;
CmnLog_Put(CMN_LOG_LEVEL_INFO, "処理結果=%d, detail=%s", 100, 正常終了); CmnLog_PutByCode(CMN_LOG_LEVEL_INFO, "C001", "です");
CmnLog_PutByCode(CMN_LOG_LEVEL_INFO, "C002", 1, "です");
CmnLog_PutByCode(CMN_LOG_LEVEL_DEBUG, "C001", "です");
CmnLog_End();

・以下、出力例(CMN_LOG_LEVEL_DEBUGで指定したメッセージは出力されない)
YYYY/MM/DD HH:MM:SS [INFO] 処理結果=100, detail=正常終了 YYYY/MM/DD HH:MM:SS [INFO] テストログです
YYYY/MM/DD HH:MM:SS [INFO] テスト1回目です

著者
H.Kumagai
日付
2004-06-06
Revision
1.2

関数詳解

void CmnLog_End ( )

標準ログ出力共通関数終了処理

標準ログ共通関数の終了処理を行う。(メモリ領域解放処理)
標準ログ共通関数の使用を終えた時は、必ずこの関数を実行すること。

著者
H.Kumagai
void CmnLog_EndCmnClibLog ( )

cmn-clib内部ログ出力終了

int CmnLog_Init ( const char *  logFile,
CMN_LOG_LEVEL  level,
const char *  msgFile 
)

標準ログ出力関数初期化処理

標準ログ出力の初期化を行う
標準ログ出力関数を使用する前にこの関数をコールしなければならない。
また、標準ログ出力関数の使用後(アプリケーション終了時)は、CmnLog_End関数をコールすること
1つのアプリケーションでログ形式を複数使用する場合は、拡張ログ出力関数(CmnLogEx_Create)を使用すること。

引数
logFile(I) ログを出力するファイルパスを指定する。
NULLを指定した場合は標準出力にログを出力する。
ファイルへの書き込みモードは、「追加書き込み」である。
level(I) ログ出力レベル。
msgFile(I) ログメッセージ定義ファイルへのパス
定義ファイルは、以下の構文に従わなければならない。
  • # 以降をコメントとする
  • 空行は無視する
  • スペースは無視する(ただし、メッセージ内のスペースはそのまま扱われる)
  • メッセージ定義は「メッセージコード」と「メッセージ」を,で区切り定義する
  • メッセージはprintfの書式に従うものとする
例)

コメント

ERROR-01, エラー発生。XXの値は[s]です。d回目の処理でした。#ここもコメント<BR> ↑メッセージコード,  ↑メッセージ

戻り値
True初期化処理成功
False初期化処理失敗(以下のような場合に失敗する)
msgFileのパスが不正な場合
メッセージ定義ファイルの文法が不正な場合
levelに不正な値が設定された場合
著者
H.Kumagai
void CmnLog_InitCmnClibLog ( CmnLogEx log,
CMN_LOG_LEVEL  level 
)

cmn-clib内部ログ出力設定。
この関数を実行するとcmn-clibの内部ログが指定したlogに出力される。

引数
logcmn-clib内部ログ出力先。NULLを指定した場合は標準ログとなる。
levelcmn-clib内部ログの出力レベル(log->levelより低いレベルのログを指定しても無効)
void CmnLog_Put ( int  level,
const char *  msg,
  ... 
)

標準ログ出力

ログを出力する。
CmnLog_Init関数をコールする前に本関数をコールした場合は何も行わない。
< ログ出力例>="">
yyyy/mm/dd[hh:mm:ss] [level] メッセージ本文

引数
level(I) ログレベル。LoggerInitで指定されたログレベルと比較し、出力可否を決める。
msg(I) メッセージ文言
...(I) メッセージ内に含まれるsやdの部分に対応する変数を指定する
著者
H.Kumagai
void CmnLog_PutByCode ( CmnLogEx log,
CMN_LOG_LEVEL  level,
const char *  msgCode,
  ... 
)

標準ログ出力

メッセージコードをもとにログを出力する。
< ログ出力例>="">
yyyy/mm/dd[hh:mm:ss] [level] msgCodeに対応するメッセージ文言

引数
log(I) 拡張ログ情報構造体へのポインタ(CmnLog_InitEx()関数の戻り値)
level(I) ログレベル。LoggerInitで指定されたログレベルと比較し、出力可否を決める。
msgCode(I) メッセージコード
...(I) メッセージ内に含まれるsやdの部分に対応する変数を指定する
著者
H.Kumagai
覚え書き
メッセージコードが存在しない場合は何も出力されない
void CmnLog_PutCmnClibLog ( CMN_LOG_LEVEL  level,
const char *  msg,
  ... 
)

cmn-clib内部ログ出力

cmn-clib内部ログを出力する。
CmnLog_InitCmnClibLog関数をコールする前に本関数をコールした場合は何も行わない。
この関数のラッパーマクロとして「CMNLOG_DEBUG」~「CMNLOG_ERROR」がある。
< ログ出力例>="">
yyyy/mm/dd hh:mm:ss [level] メッセージ本文

引数
level(I) ログレベル。CmnLog_InitCmnClibLogで指定されたログレベルと比較し、出力可否を決める。
msg(I) メッセージ文言
...(I) メッセージ内に含まれるsやdの部分に対応する変数を指定する
著者
H.Kumagai