[Seasar-user:18958] Re: [DBFlute] ログ出力について

kubo [E-MAIL ADDRESS DELETED]
2009年 12月 3日 (木) 02:37:47 JST


久保(jflute)です。

あわねさん、こんばんは。

とりあえずは:
 o CallbackContextはDBFluteの機能:別のDIコンテナでも共通
 o SqlLogRegistryはS2Containerの機能:Seasarを利用した場合のみ
という違いが一つ。

また、仕組み的なところの違いは、
SqlLogRegistryはスレッドローカルにSQLを自動的に溜めていきますが、
CallbackContextは発行されたSQLをどうするか(溜めるかどうかなど)自体を
ユーザに任せます。(直接ログに出力したり、DBに格納したり、
SqlLogRegistryのようにスレッドローカルに溜めたりと色々)。

DBFluteにおけるSqlLogRegistry利用の特徴としては、
全てリフレクション経由で利用しています。
(DBFluteランタイムはS2Containerに依存しないため)

CallbackContextはDBFluteの固有の機能なので、
今後、細かい点で関連機能をアップさせるとなれば、
当然ですがCallbackContextのみに反映されることになります。
また「SQLのログ文字列を取得」というドキュメントを書く場合、
これも当然ですがCallbackContextをメインに書きます。
DBFluteはS2ContainerのSqlLogRegistry機能「も」
サポートしてるという形式なので。

片方は別のプロダクトの機能なので、どちらがお奨めかって
話は自分からはすることはできないですが、
以上の違いをふまえて、適切に選んで頂けたらと思います。


2009/12/3  <[E-MAIL ADDRESS DELETED]>:
> あわねです。いつもお世話になっております。
>
> 便乗で質問させてください。
> S2ContainerとDBFluteの組み合わせの場合、
> CallbackContextとSqlLogRegistry(S2Containerの機能)では
> どちらがお勧めでしょうか。
> (カスタマイズ性やパフォーマンスの観点など)
> もちろん用途にもよると思いますが。
>
> 今SqlLogRegistryを開発時に使っているので、
> SqlLogRegistryとCallbackContextの機能差異を知りたいです。
> よろしくお願いします。
>
> --- kubo  wrote:
>> 久保(jflute)です。
>>
>> なるほど、select以外のSQLだけのログファイルを
>> 作成するような感じですかね。
>> まあ、それでもおっしゃる通りでやり方は同じです。
>> CallbackContextでフィルタ掛けて取得したSQLを
>> Log4jで出力してしまえばOKです。
>> (その方がアプリでカスタマイズしやすいので良いですね)
>>
>> フィルタの判定は、前回のメールの通りですが、
>> どうしても「厳密な判定」をしたいということでしたら、
>> 次の0.9.6.1から、CallbackContextの中で「BehaviorCommand」
>> という内部インターフェースにアクセスできるようにしています。
>> BehaviorCommandのメソッドを利用、サブクラスを判定など、
>> 少しでも判定の足しになればと思います。
>> 但し、これは内部インターフェースなので、互換性に注意して下さい。
>> 利用する場合は、デグレ防止用の単体テストを書くことをお奨めします。
>> 「BehaviorCommand」の取得の仕方は、
>> dbflute-basic-exampleのCallbackContextTestをご覧下さい。
>>
>>
>> 2009/12/1  <[E-MAIL ADDRESS DELETED]>:
>> > 豊城です。
>> > 説明不足ですみませんでした。
>> > QLog(log4j)を利用し取得したかったですが、Callbackで取得できるので
>> > Callbackからの取得したログを利用したいと思います。
>> >
>> > 久保さん回答ありがとうございます。
>> >
>> >>久保(jflute)です。
>> >>
>> >> 豊城さん、こんにちは
>> >>
>> >> ログの取得ことですが、これはプログラム上で
>> >> 文字列として取得したいということでよろしいでしょうか?
>> >>
>> >> そうであれば、まず以下のような方法で取得可能です。
>> >> http://d.hatena.ne.jp/jflute/20081109/1226212154
>> >>
>> >> select文を除外などのフィルタは、ここのcallbackにて、
>> >> フィルタ処理を掛けるような形になります。
>> >> 自動生成されるSQLに関しては定型的な形で出力されますが、
>> >> 外だしSQLの場合はそうではありませんので、アプリにて
>> >> ある程度規約を設けて、それに基づいて判定するといいでしょう。
>> >> どうでしょう、要件は満たせますでしょうか?
>> >>
>> >> 2009/12/1  <[E-MAIL ADDRESS DELETED]>:
>> >> > 豊城です。初心者ですがいろいろ勉強させてもらっています。
>> >> >
>> >> > DBFluteのログ出力でSelect文以外のSQL(Update、Insert等)のログだけ取得したい場合、
>> >> > どのような設定が必要ですか?
>> >> > DBFluteは0.9.6を使用しています。
>> >> >
>> >> > すみませんがよろしくお願いします。
>> >> >
>> >> > _______________________________________________
>> >> > Seasar-user mailing list
>> >> > [E-MAIL ADDRESS DELETED]
>> >> > https://ml.seasar.org/mailman/listinfo/seasar-user
>> >> >
>> >> _______________________________________________
>> >> Seasar-user mailing list
>> >> [E-MAIL ADDRESS DELETED]
>> >> https://ml.seasar.org/mailman/listinfo/seasar-user
>> >>
>> >
>> > _______________________________________________
>> > Seasar-user mailing list
>> > [E-MAIL ADDRESS DELETED]
>> > https://ml.seasar.org/mailman/listinfo/seasar-user
>> >
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
> --------------------------------------
> Learn more about HIV/AIDS - Red Ribbon Campaign 2009
> http://pr.mail.yahoo.co.jp/redribbon/
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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