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

ログ出力系 共通関数 I/Fヘッダファイル [詳解]

#include <time.h>
#include <stdarg.h>
#include "cmnclib/Common.h"
#include "cmnclib/CmnThread.h"

[ソースコード]

データ構造

struct  tag_CmnLogMessage
 
struct  tag_CmnLogEx
 

マクロ定義

#define CMNLOG_TRACE_START()   clock_t cmnlogtrace_stclock=clock();CmnLog_PutCmnClibLog(CMN_LOG_LEVEL_TRACE, "START %s", __func__)
 
#define CMNLOG_TRACE_END()   CmnLog_PutCmnClibLog(CMN_LOG_LEVEL_TRACE, "END %s(clocks=%d)", __func__, clock() - cmnlogtrace_stclock)
 
#define CMNLOG_TRACE(msg, ...)   CmnLog_PutCmnClibLog(CMN_LOG_LEVEL_TRACE, (msg), __VA_ARGS__)
 
#define CMNLOG_DEBUG(msg, ...)   CmnLog_PutCmnClibLog(CMN_LOG_LEVEL_DEBUG, (msg), __VA_ARGS__)
 
#define CMNLOG_INFO(msg, ...)   CmnLog_PutCmnClibLog(CMN_LOG_LEVEL_INFO, (msg), __VA_ARGS__)
 
#define CMNLOG_WARN(msg, ...)   CmnLog_PutCmnClibLog(CMN_LOG_LEVEL_WARN, (msg), __VA_ARGS__)
 
#define CMNLOG_ERROR(msg, ...)   CmnLog_PutCmnClibLog(CMN_LOG_LEVEL_ERROR, (msg), __VA_ARGS__)
 

型定義

typedef struct tag_CmnLogMessage CmnLogMessage
 
typedef struct tag_CmnLogEx CmnLogEx
 

列挙型

enum  CMN_LOG_LEVEL {
  CMN_LOG_LEVEL_NOTHING, CMN_LOG_LEVEL_ERROR, CMN_LOG_LEVEL_WARN, CMN_LOG_LEVEL_INFO,
  CMN_LOG_LEVEL_DEBUG, CMN_LOG_LEVEL_TRACE, CMN_LOG_LEVEL_MAX = CMN_LOG_LEVEL_TRACE
}
 

関数

D_EXTERN int CmnLog_Init (const char *logFile, CMN_LOG_LEVEL level, const char *msgFile)
 標準ログ出力関数初期化処理 [詳解]
 
D_EXTERN void CmnLog_End ()
 標準ログ出力共通関数終了処理 [詳解]
 
D_EXTERN void CmnLog_Put (int level, const char *msgCode,...)
 標準ログ出力 [詳解]
 
D_EXTERN void CmnLog_PutByCode (CmnLogEx *log, CMN_LOG_LEVEL level, const char *msgCode,...)
 標準ログ出力 [詳解]
 
D_EXTERN void CmnLog_InitCmnClibLog (CmnLogEx *log, CMN_LOG_LEVEL level)
 
D_EXTERN void CmnLog_EndCmnClibLog ()
 
D_EXTERN void CmnLog_PutCmnClibLog (CMN_LOG_LEVEL level, const char *msgCode,...)
 cmn-clib内部ログ出力 [詳解]
 
D_EXTERN CmnLogExCmnLogEx_Create (const char *logFile, CMN_LOG_LEVEL level, const char *msgFile)
 拡張ログ出力関数初期化処理 [詳解]
 
D_EXTERN void CmnLogEx_Free (CmnLogEx *log)
 拡張ログ出力共通関数終了処理 [詳解]
 
D_EXTERN void CmnLogEx_Put (CmnLogEx *log, CMN_LOG_LEVEL level, const char *msg,...)
 拡張ログ出力 [詳解]
 
D_EXTERN void CmnLogEx_PutByCode (CmnLogEx *log, CMN_LOG_LEVEL level, const char *msgCode,...)
 拡張ログ出力 [詳解]
 
D_EXTERN void cmnLogEx_PutLog (CmnLogEx *log, CMN_LOG_LEVEL level, const char *msg, va_list args)
 拡張ログ出力(内部用関数) [詳解]
 
D_EXTERN CmnLogMessageCmnLogMessage_Create (const char *msgFile)
 ログメッセージ定義ファイル読み込み [詳解]
 
D_EXTERN void CmnLogMessage_Free (CmnLogMessage *list)
 ログメッセージリスト解放処理 [詳解]
 
D_EXTERN int CmnLogMessage_Get (CmnLogMessage *list, const char *msg_code, CmnLogMessage *msg)
 ログメッセージ取得 [詳解]
 

詳解

ログ出力系 共通関数 I/Fヘッダファイル

ログ出力系共通関数を使用するためのI/Fヘッダファイル。
ログ出力系の共通関数を使用する場合は、このヘッダファイルを読み込むこと

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

型定義詳解

typedef struct tag_CmnLogEx CmnLogEx

拡張ログ情報

ログメッセージ格納構造体

列挙型詳解

ログ出力レベル

列挙値
CMN_LOG_LEVEL_NOTHING 

沈黙レベル(全てのログを出力しない)

CMN_LOG_LEVEL_ERROR 

エラーレベル(ERRORで指定されたログを出力)

CMN_LOG_LEVEL_WARN 

警告レベル(ERROR/WARNで指定されたログを出力)

CMN_LOG_LEVEL_INFO 

通知レベル(ERROR/WARN/INFOで指定されたログを出力)

CMN_LOG_LEVEL_DEBUG 

デバッグレベル(ERROR/WARN/INFO/DEBUGで指定されたログを出力)

CMN_LOG_LEVEL_TRACE 

トレースレベル(全てのログを出力)

CMN_LOG_LEVEL_MAX 

ログレベルに指定できる最大値

関数詳解

D_EXTERN void CmnLog_End ( )

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

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

著者
H.Kumagai
D_EXTERN void CmnLog_EndCmnClibLog ( )

cmn-clib内部ログ出力終了

D_EXTERN 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
D_EXTERN void CmnLog_InitCmnClibLog ( CmnLogEx log,
CMN_LOG_LEVEL  level 
)

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

引数
logcmn-clib内部ログ出力先。NULLを指定した場合は標準ログとなる。
levelcmn-clib内部ログの出力レベル(log->levelより低いレベルのログを指定しても無効)
D_EXTERN 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
D_EXTERN 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
覚え書き
メッセージコードが存在しない場合は何も出力されない
D_EXTERN 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
D_EXTERN CmnLogEx* CmnLogEx_Create ( const char *  logFile,
CMN_LOG_LEVEL  level,
const char *  msgFile 
)

拡張ログ出力関数初期化処理

ログメッセージ定義ファイルを読み込み、拡張ログ出力関数の使用準備をする。
拡張ログ出力関数を使用する前にこの関数をコールしなければならない。
また、拡張ログ出力関数の使用後は、CmnLogEx_Free()関数をコールすること。
標準ログ出力関数と異なり、複数のログ出力設定をすることが出来る。

引数
logFile(I) ログを出力するファイルパスを指定する。
NULLを指定した場合は標準出力にログを出力する。
ファイルへの書き込みモードは、「追加書き込み」である。
level(I) ログ出力レベル。
指定可能な出力レベルについては、CmnLog_Init()関数を参照のこと。
msgFile(I) ログメッセージ定義ファイルへのパス。
定義ファイルを使用しない場合はNULLを指定する。
定義ファイルの構文は、CmnLog_Init()関数を参照のこと。
戻り値
初期化に成功した場合は、LogEx構造体へのポインタを返し、
初期化に失敗した場合はNULLを返す。(以下のような場合に失敗する)
msgFileのパスが不正な場合
メッセージ定義ファイルの文法が不正な場合
levelに不正な値が設定された場合
fileにNULLが指定された場合
参照
標準ログ出力関数初期化処理 CmnLog_Init()
著者
H.Kumagai
D_EXTERN void CmnLogEx_Free ( CmnLogEx log)

拡張ログ出力共通関数終了処理

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

引数
log(I/O) 拡張ログ情報へのポインタ
著者
H.Kumagai
D_EXTERN void CmnLogEx_Put ( CmnLogEx log,
CMN_LOG_LEVEL  level,
const char *  msg,
  ... 
)

拡張ログ出力

ログを出力する。出力先はCmnLog_InitEx()関数の引数fileに指定したファイル。
< ログ出力例>="">
yyyy/mm/dd[hh:mm:ss] [level] メッセージ本文

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

拡張ログ出力

ログを出力する。出力先はCmnLog_InitEx()関数の引数fileに指定したファイル。
< ログ出力例>="">
yyyy/mm/dd[hh:mm:ss] [level] msgCodeに対応するメッセージ文言

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

拡張ログ出力(内部用関数)

ログを出力する。
< ログ出力例>="">
yyyy/mm/dd[hh:mm:ss] [level] メッセージ本文

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

ログメッセージ定義ファイル読み込み

ログメッセージファイルの読み込みを行い、 LogMessage構造体にデータを格納する。

引数
msgFile(I) ログメッセージ定義ファイルへのパス
戻り値
LogMessageへのポインタ読み込み完了
NULLFalse 読み込み失敗(以下のような場合に失敗する)
fileが無効なポインタの場合
メッセージ定義ファイルの文法が不正な場合
著者
H.Kumagai
覚え書き
この関数は、ログ出力共通関数から使用される。外部からの使用は禁止。
D_EXTERN void CmnLogMessage_Free ( CmnLogMessage list)

ログメッセージリスト解放処理

ログメッセージリストのメモリ領域を解放する

引数
list(I) 解放するログメッセージリストへのポインタ
著者
H.Kumagai
覚え書き
この関数は、ログ出力共通関数から使用される。外部からの使用は禁止。
D_EXTERN int CmnLogMessage_Get ( CmnLogMessage list,
const char *  msg_code,
CmnLogMessage msg 
)

ログメッセージ取得

メッセージコードに対応したメッセージコード文字列とメッセージ文字列を取得する

引数
list(I) ログメッセージリスト
msg_code(I) メッセージコード
msg(O) LogMessage構造体へのポインタを指定する。
メッセージ取得成功時には、msg->codeとmsg->msgに値が格納される
戻り値
True取得成功時
False取得失敗時(該当するメッセージコードが存在しない場合)
著者
H.Kumagai
覚え書き
この関数は、ログ出力共通関数から使用される。外部からの使用は禁止。