エラーログ設計に関して
タイトルからだとぱっと見分からないのですが、バッチ処理に関してのログ設計に関して書かれていました。
良い記事だと思います。 一点気になったことを挙げるとすれば、エラーコードに関して言及がなかったのでどういう思想があるのか聞いてみたいです。
個人的な意見ではありますが、エラーコードの設計はこんな感じでやればいいのではないかと思ってます。
※あくまで個人的な考えなのでご意見等ありましたら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.
- スレッド名
- エラーメッセージ
出力形式をまとめると、以下の通りとなる。
日付 時間 エラーレベル エラーコード [スレッド名] エラーメッセージ
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] 売上データホスト送信が異常終了しました。