[Seasar-user:20832] Re: 回复: Re:dbflute実行用のsql文取得方法について聞きたいです。

kubo [E-MAIL ADDRESS DELETED]
2011年 7月 1日 (金) 16:04:50 JST


久保(jflute)です。

> お客様の要望はDB更新処理に成功かどうかにかかわらず、操作したという情報をすべて
> DBに記録したいです。
> 上記の理由で、DB更新前に本業務と異なるトランザクションを起動して、ログを出力しますが、
> sql文は取れないという問題があります。

なるほど。
「DB更新前に本業務と異なるトランザクションを起動」
ではなく、DB更新して例外が発生してもしなくても、
発行したSQLをログに出力する仕組みにしてはどうでしょうか?
イメージしては以下のような感じです。
(実際にはAOPとか絡める感じですが)

try {
    ...その他のDBアクセス
    DB更新()
    ...その他のDBアクセス
} finally {
    どこで例外が発生しようが、
    発行したSQLをログ出力。
}

CallbackContextのSqlLogHandlerは、
実際にDB更新が実行される前(直前)に
コールバックされますので、
どこで例外が発生しようが、SqlLogHandler経由で
保持しておいたSQLをログに出力すれば良いと思います。


2011/7/1  <[E-MAIL ADDRESS DELETED]>:
> 久保さんへ
> いつもお世話になっております。
> iafandaです。こんにちは。
> ご回答ありがとうございました。
> 先ほどは未完成のメールを誤って送りました、メールを再送します。
>>実行後では不都合な業務的な理由が何かあるのでしょうか?
> お客様の要望はDB更新処理に成功かどうかにかかわらず、操作したという情報をすべて
> DBに記録したいです。
> 上記の理由で、DB更新前に本業務と異なるトランザクションを起動して、ログを出力しますが、
> sql文は取れないという問題があります。
>>もちろん、色々と改造すればできなくはないですが、
>>DBFluteの正式な機能としては提供していません。
> なにか修正方法とか、参考になる情報などを教えていただけないですか?
> dbfluteでsql実行とsql文ログを出力するところを教えていただけないですか?
> よろしくお願いします。
> ----- 原始邮件 -----
> 发件人:kubo <[E-MAIL ADDRESS DELETED]>
> 收件人:[E-MAIL ADDRESS DELETED]
> 主题:[Seasar-user:20829] Re:dbflute実行用のsql文取得方法について聞きたいです。
> 日期:2011-7-1 14:00:48
>
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>


Seasar-user メーリングリストの案内