C#でマルチプロセス対応なログ出力

システムログなど複数のアプリやマルチプロセスからの同一ログファイルへ出力する方法を紹介します。

ポイント

  • ファイルへの書き込み処理を同時に行うと競合エラーが発生し行うことができない為、Lockステートメントを使用し排他制御を行う
    Lockステートメント内を実行中は他のプロセスは待機状態となる
  • Lock用のオブジェクトは全プロセス共通にする為、静的インスタンス(Static)にする(インスタンスメソッド内で使用するならメンバー変数にする)

動作内容

  • Logger.Writeメソッドのmessageフィールドに指定した内容をログ出力
  • ログの保存場所は「カレントディレクトリ¥Log¥」
  • 上記ログ保存ディレクトリがなければ作成
  • 出力するファイル形式は「Log_yyyymm.txt」
  • ログの保存期間は1年で期限切れのログファイルは削除

ソースコード

使用例

出力結果(Log_20190901.txt)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です