nikuyoshiのブログ

記事の内容については個人の見解であり、所属企業の意見を代表するものではありません

エラーログ設計に関して

qiita.com

タイトルからだとぱっと見分からないのですが、バッチ処理に関してのログ設計に関して書かれていました。

良い記事だと思います。 一点気になったことを挙げるとすれば、エラーコードに関して言及がなかったのでどういう思想があるのか聞いてみたいです。

個人的な意見ではありますが、エラーコードの設計はこんな感じでやればいいのではないかと思ってます。

※あくまで個人的な考えなのでご意見等ありましたらnikuyoshiまでご連絡ください。

定義

  • エラーレベル
    • FATAL
    • ERROR
    • WARN
    • INFO
    • DEBUG
  • エラー種別(括弧内はエラーコードで使用するアルファベット3桁)
    • システムエラー( SYS )
    • アプリケーションエラー( APL )
    • 業務エラー( BIZ )
    • セキュリティエラー( SEC )
    • 不明なエラー( UNK )
  • カテゴリ
    • カテゴリはアプリケーションの機能ごとに分離して定義する。
      • 00 : 売上データ取り込み関連
      • 01 : 売上個社別日次集計関連
      • 02 : 売上データホスト送信関連
  • コード値
    • カテゴリで分類されたものをさらに細分化する。
      • カテゴリ-コード値 で以下のように表記してみる。
      • 00-001 : 売上データ取り込み開始
      • 00-002 : 売上データ取り込み警告終了
      • 01-001 : 売上個社別日次集計開始
      • 01-002 : 売上個社別日次集計正常終了
      • 02-001 : 売上データホスト送信開始
      • 02-002 : 売上データホスト送信異常終了

エラーログの出力形式

  • 日付
    • yyyy/mm/dd
  • 時間(ミリ秒)
    • hh:mm:ss,nnn
  • エラーレベル
    • FATAL / ERROR / WARN / INFO / DEBUG
  • エラーコード
    • アプリケーションで定義したエラーコード定義。 Zabbix等の監視ソフトウェアで監視させる場合にキーとなる情報とする。
    • エラー種別-エラーレベル-カテゴリ-コード値(-必要であれば枝番等)
      • ex. APL-INFO-00-001, APL-ERROR-02-002
  • スレッド名
  • エラーメッセージ

出力形式をまとめると、以下の通りとなる。

日付 時間 エラーレベル エラーコード [スレッド名] エラーメッセージ

ex.

2015/11/26 01:20:00,000 INFO APL-INFO-00-001 [main] 売上データ取り込み 開始しました。

2015/11/26 01:21:00,000 ERROR APL-ERROR-02-002 [main] 売上データホスト送信が異常終了しました。