- ベストアンサー
Java EE同時ログ出力の衝突疑問?
こんにちはJsp+servlet+beanでWEBアプリを作っていますが、 WEBの性質上同時アクセスがあった場合、それぞれがログファイルに書き込もうとして、ログファイルがぐちゃぐちゃになりませんか? シーケンシャル処理(セッションAのログ出力完了後セッションBが出力する)はどうやって実現できますか? なんらかの原因でセッションのログ処理が永遠に終わらない場合、その他のログ出力セッションは待たされますか?(業務が停止すると困るので・) Log4jを使う予定ですが、上記の問題を解決できますか? ありがとうございます。m-.-m
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
質問を具体的に書くとこういうことかしら? Log.debug("start user:" + user); Log.debug("end user:" + user); こんなコードがあったとする。 AさんとBさんがアクセスしたときに期待される出力は start user:A end user:A start user:B end user:B だけど、しかし、次のようになることもある。 start user:A start user:B end user:A end user:B 確かに普通に発生する現象ね。 一番単純な考え方は、処理が終了するまではログをバッファリングしておいて 最後のときにまとめて出力 て言うやり方よね。 イメージ的には次な感じ。 buffer.append("start user:" + user); buffer.append("end user:" + user); Log.debug(buffer);