cmn-clib(CommonLibraryForC)
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回目です
void CmnLog_End | ( | ) |
標準ログ出力共通関数終了処理
標準ログ共通関数の終了処理を行う。(メモリ領域解放処理)
標準ログ共通関数の使用を終えた時は、必ずこの関数を実行すること。
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) ログメッセージ定義ファイルへのパス 定義ファイルは、以下の構文に従わなければならない。
コメント
|
ERROR-01, エラー発生。XXの値は[s]です。d回目の処理でした。#ここもコメント<BR> ↑メッセージコード, ↑メッセージ
True | 初期化処理成功 |
False | 初期化処理失敗(以下のような場合に失敗する) msgFileのパスが不正な場合 メッセージ定義ファイルの文法が不正な場合 levelに不正な値が設定された場合 |
void CmnLog_InitCmnClibLog | ( | CmnLogEx * | log, |
CMN_LOG_LEVEL | level | ||
) |
cmn-clib内部ログ出力設定。
この関数を実行するとcmn-clibの内部ログが指定したlogに出力される。
log | cmn-clib内部ログ出力先。NULLを指定した場合は標準ログとなる。 |
level | cmn-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の部分に対応する変数を指定する |
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の部分に対応する変数を指定する |
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の部分に対応する変数を指定する |