システムにとってログ出力機能は非常に重要な存在ですが、必要なログ出力機能はシステムによって異なります。
そこで必要最低限の機能を持つログ出力クラスをC#で作ってみました。
言語の候補はC++とPythonとC#で悩みましたが、一番ラクそうで簡単そうなC#を選びました(・ω<)テヘ
ソースはすべてGitHubに置いています。
この記事では機能のみを紹介します。
大して試験してないので動くかわからないです(・ω<)テヘ
Contents
このログクラスの位置づけ
今回作ったログ出力クラスは、個人的に最低限必要だろうと感じる機能のみを持っています。
なので、システムごとに必要な機能を追加していくことを想定しています。
基本C#かVB.NETからの呼び出しになると思います。
ログ出力機能
GitHubのREADME.mdに記載しているので、そのまま載せます。
lib_log
C#のロギングクラス(DLL)です。
使用するには.NET Framework 3.5以上をインストールする必要があります。
機能
- テキストファイルにログ出力します。
- 出力するログレベルは4段階です(詳細は後述)
- 複数プロセスからのアクセスには対応してません。
使い方
以下の関数を呼び出すことでログ出力します。
public static void WriteEntry(string message)
引数messageの内容をログファイルに出力します。
後述のIsAutoFlush設定をfalseに設定している場合、一定量メモリに保持します。
ログレベルはデフォルト(Infomation)になります。
public static void WriteEntry(string message, TraceEventType severity)
引数messageの内容をログファイルに出力します。
後述のIsAutoFlush設定をfalseに設定している場合、一定量メモリに保持します。
引数severityにはログレベルを表す数値0~3を指定します。
また、このログレベルを表す数値はConstantクラスのTraceEventType列挙体によって提供されます。
public static void Flush()
メモリに保持しているログ内容をログファイルに出力します。
その後、メモリに保持しているログ内容を削除します。
設定
lib_log.xmlに値を設定することで、以下の機能を実現することができます。
LogFilePath
ログファイルを出力する絶対パスを指定します。
BaseFileName
ログファイル名のベース部分を指定します。 ログファイル名は「<ベース部分>_<システム日付yyyymmdd>.log」になります。
例:test_20180101.log
IsAppend
ログファイルを末尾に追加するかどうかを指定します。
- true:末尾に追加する
- false:末尾に追加しない(更新ごとにログファイルを上書き)
Severity
出力するログレベルを0~3の数値で指定します。
指定したログレベルまでのログを出力します。
- 0 情報メッセージ(Infomation)
- 1 重要でない問題(Warning)
- 2 回復可能なエラー(Error)
- 3 致命的なエラーまたはアプリケーションのクラッシュ(Critical)
MaxFileSize
ファイルの最大サイズ(byte)を指定します。
ここで指定したサイズより大きくなる場合、新しいログファイルに出力するようになります。
この際、古いログファイルは例えば「test_20180101.log.bk」のようにファイル名の最後に.bkを付与し、一世代前まで管理されます。
IsAutoFlush
ログ出力関数(WriteEntry)を呼び出したタイミングで、ログファイルにログ出力をするかを指定します。
- true:直ちにログファイルに出力します。
- false:ログを一定量(MaxFileSizeの3分の1)メモリに保持してからまとめてログファイルに出力します。
通常trueを指定することをオススメしますが、処理速度を速めたい等の状況に応じて、falseを指定します。
コメントを残す