私のWebサービスは次のように構成されています。
- リクエストを受け取る
- 入力を解析して検証する
- 実際のWebサービスを実行する
- 出力を検証する
私は主にデバッグ目的でログを使用しています。何か問題が発生した場合は、リクエストが何であるかを知りたいので、それを再現したいと思います(つまり、まったく同じリクエストを送信します)。
現在、MySQLデータベーステーブルにログを記録しています。1.の後、レコードが作成され、2。および3.の後に詳細情報で更新され、4。の後にクリーンアップされます(成功した要求のログは整理されます)。
ロギングを可能な限り迅速かつ無痛にしたいと思います。ここで速度を上げると、全体的なパフォーマンスが大幅に向上します(各リクエストのラウンドトリップ)。
使用することを考えていましたが、ログレコードを更新して後で削除するか、少なくともリクエストのステータス(成功またはエラー)を記録して、いつ削除するかを知るINSERT DELAYED
必要があるため、それを実行できません。LAST_INSERT_ID
自分で一意のID(または少なくとも「十分に一意」のID)を生成することはできますが、それでもDELAYED
ステートメントの順序がわからず、まだ存在しないレコードを更新または削除しようとする可能性があります。また、DELAYED
使用する機能が削除NUM_AFFECTED_ROWS
されるため、クエリが実行されているかどうかを確認できません。
助言がありますか?