ログ機構の設計を考える

自作アプリケーション「環境変数エディタ」に簡単なログ機構を追加しました。 EnvVar.Log クラスで実装しています(C# のプロパティの文法にいまだに慣れない…)。

ログを出力するための機構は、プログラマーにとってはできるだけ簡単に使える必要があるけど、一方、柔軟なカスタマイズもしたい。例えば、パッと思いつくだけでも次のようなカスタマイズ項目があると思います。

  • ログレベル
  • ファシリティ(分類)
  • 行のフォーマット
    • 日時
    • プロセス ID / スレッド ID
    • ホスト名、ユーザー名など
  • 出力先
    • ログファイル
      • ファイル名
      • ファイル分け
    • 端末
      • 標準出力
      • 標準エラー出力
    • ウィンドウ
    • 別のホスト

本格的なログライブラリならば上のようないろんな要求に応えられると思いますが、そのぶん気軽には使えなくなってしまいます。設計者の割り切りが必要な気がします。