porter/libsrc/porter/infra/potrLog.c

1 ファイル

1.1 porter/libsrc/porter/infra/potrLog.c

porter ロガー実装。

trace-util のプロキシモジュールです。
OS レベルのトレース出力 (Linux: syslog、Windows: ETW)、 ファイルトレース、stderr 出力のすべてを trace-util に委任します。

OS 出力先
Linux syslog (trace-util 経由)、ログファイル (trace-util 経由)、stderr (trace-util 経由、console 指定時)
Windows ETW (trace-util 経由)、ログファイル (trace-util 経由)、stderr (trace-util 経由、console 指定時)

1.1.1 作者

c-modernization-kit sample team

1.1.2 バージョン

1.0.0

1.1.3 日付

2026/03/09

1.1.4 スレッド セーフティ

本モジュールはスレッドセーフです。
すべての出力制御は trace-util が内部で排他制御を行います。

1.1.5 インクルード元

potrLog.c のインクルード元

1.1.6 著作権

Copyright (C) CompanyName, Ltd. 2026. All rights reserved.

2 関数

2.1 log_basename

static const char *log_basename ( const char *path )

パスの末尾ファイル名部分を返す。

‘/’ または ’' の最後の出現以降の文字列を返します。
区切り文字が存在しない場合は path をそのまま返します。

2.1.1 呼び出し元

log_basename の呼び出し元

2.2 potrLogConfig

POTR_EXPORT int POTR_API potrLogConfig ( PotrLogLevel level, const char *log_file, int console )

ロガーを設定します。

本関数は potrOpenService() の前に呼び出してください。
複数回呼び出した場合は最後の設定が有効になります。

2.2.1 引数

  • level [in] 出力する最低ログレベル。POTR_TRACE_NONE でログ無効 (デフォルト)。
  • log_file [in] ログファイルのパス。NULL または空文字列を指定するとファイル出力なし。
  • console [in] 0 以外を指定すると標準エラー出力 (stderr) にも出力します。

2.2.2 戻り値

成功時は POTR_SUCCESS、log_file が開けない場合は POTR_ERROR を返します。

2.2.3 警告

log_file に指定したパスが書き込み不可の場合は POTR_ERROR を返します。

2.2.4 出力先

OS 出力先
Linux syslog (trace-util 経由)、ログファイル (trace-util 経由、log_file 指定時)、stderr (trace-util 経由、console 指定時)
Windows ETW (trace-util 経由)、ログファイル (trace-util 経由、log_file 指定時)、stderr (trace-util 経由、console 指定時)

2.2.5 ログフォーマット

OS トレース (syslog / ETW) およびファイルへの出力フォーマット:

[file.c:line] message

stderr への出力フォーマット (タイムスタンプは UTC、L はレベル文字):

YYYY-MM-DD HH:MM:SS.mmm L [file.c:line] message

2.2.6 ログレベル一覧

レベル 出力内容
POTR_TRACE_CRITICAL 0 致命的エラー
POTR_TRACE_ERROR 1 操作失敗
POTR_TRACE_WARNING 2 NACK・REJECT・回復可能な異常
POTR_TRACE_INFO 3 サービス開始・終了・接続状態変化
POTR_TRACE_VERBOSE 4 ソケット操作・設定値・パケット送受信・スレッド動作
POTR_TRACE_NONE 5 ログ無効 (デフォルト)

2.2.7 使用例

// INFO 以上をファイルと stderr に出力
potrLogConfig(POTR_TRACE_INFO, "/var/log/porter.log", 1);

// VERBOSE 以上をファイルのみに出力
potrLogConfig(POTR_TRACE_VERBOSE, "/tmp/porter.log", 0);

// ログを無効化
potrLogConfig(POTR_TRACE_NONE, NULL, 0);

2.2.8 スレッド セーフティ

本関数はスレッドセーフです。
出力制御は trace-util が内部で排他制御を行うため、ログを出力中のスレッドが存在する場合でも 安全に設定を変更できます。

2.2.9 呼び出し元

potrLogConfig の呼び出し元

2.3 potr_log_write

void potr_log_write ( PotrLogLevel level, const char *file, int line, const char *fmt, ... )

ログメッセージを書き込みます (内部関数)。

g_log_level より低いレベルのメッセージは無視されます (高速パス)。
本関数を直接呼び出さず、POTR_LOG マクロを使用してください。

2.3.1 引数

  • level [in] ログレベル。
  • file [in] ソースファイル名 (__FILE__)。
  • line [in] 行番号 (__LINE__)。
  • fmt [in] printf 形式のフォーマット文字列。
  • … [in] フォーマット引数。

2.3.2 呼び出し先

potr_log_write の呼び出し先

3 変数

3.1 s_trace

static trace_provider_t *s_trace = NULL;

トレースプロバイダハンドル。trace_init() で一度だけ初期化する。