- PR -

iBATISのログ出力の整形について

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/07/18
投稿数: 26
投稿日時: 2009-02-02 22:17
こんばんは。

現在、iBATISを使用してアプリを作っています。
SQLの確認用に、Log4jでのログ出力を行っていますが、
ログ出力のされたかが、いまいちなので困っています。

log4jでの出力は以下のような感じです。
===
java.sql.PreparedStatement ・・・ INSERT INTO TABLE values (?, ?)
java.sql.PreparedStatement ・・・ Parameters:{data1, data2}
===

できれば、ログをコピペして、SQLを発行できるように、以下のように出力させたいのですが、実際できるのでしょうか?

出力させたいログ形式
==
java.sql.PreparedStatement ・・・ INSERT INTO TABLE values ('data1', 'data2')
===
朝日奈 ありす
ベテラン
会議室デビュー日: 2007/10/28
投稿数: 57
お住まい・勤務地: 北の都
投稿日時: 2009-02-02 23:25
フレームワーク部でおこなっているため、設定だけではできません。

DeCompile > Log記述方式変更 > Compile で作り直してください。

あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-02-03 11:12
私なら
そのログファイルを読込んで
SQL文に整形するツールを作成します。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-02-03 12:20
DBによりますが、そもそも論をいうと、
PreparedStatementの殆どの実装は、
INSERT INTO TABLE values (?, ?) というプレペア命令を送ってから、
後で値だけ別で送り出しています。

PreparedStatementがパラメータの文字のエスケープをして、
SQLを作成して送ってくれているわけでは有りません。

RDBMSによって文字のエスケープ方式も違いますし、
それをドライバなどから機械的に取得して処理する方法もありません。
ですので実行可能なSQLを出力するには、自前で実装するしか有りません。

ちなみに、この話はJDBCだけの話ではありません。
他の言語でも似たような話かと思います。
その辺の仕組みを熟知すれば、
「いまいち」から「充分」になるのではないでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)