質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

2196閲覧

p6spyを使ってjavaのsqlログ出力が出るようにしたい

a_f

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/02/07 05:15

前提・実現したいこと

p6spyを使ってjavaのsqlログ出力が出るようにしたいです。
eclipseでjavaプログラムを書いています。
oracleへinsertを行っている部分があり、クエリの中身を確認するためログを出せるようにしたいと調べているうちにp6spyというものがあることを知りました。
早速使ってみたのですが、なんとかp6spyのログが出るところまで行けたものの、
statementに関するログが出てきません。
何か原因が分かる方がいましたらご教示頂けますでしょうか。
なるべく詳しく記載するように心がけましたが、初心者のため公開している情報に不足があるかもしれません。
よろしくお願い致します。

発生している問題・エラーメッセージ

p6spyのログとjava実行中のコンソールには特にエラーは表示されません。
log4jのログにもエラーはありません。

ただ、p6spyのログを見るとdebugとinfoのカテゴリのログのみ出力された状態になります。

ログの内容は↓のようになります。
1517910372066|-1||debug||com.p6spy.engine.common.P6SpyOptions reloading properties
02-06-18 18:46:12:73|-1||info||Using properties file: C:\hcrDeveloperV1.0_x64\workspace\test\bin\spy.properties
02-06-18 18:46:12:74|-1||info||No value in environment for: getStackTrace, using: false
02-06-18 18:46:12:74|-1||info||No value in environment for: getAppender, using: jp.gr.java_conf.minokuba.p6spy.engine.logging.appender.CustomizedLog4jLogger
02-06-18 18:46:12:74|-1||info||No value in environment for: getAppend, using: true
02-06-18 18:46:12:74|-1||info||No value in environment for: getFilter, using: false
02-06-18 18:46:12:74|-1||info||No value in environment for: getUsePrefix, using: false
02-06-18 18:46:12:74|-1||info||No value in environment for: getAutoflush, using: true
02-06-18 18:46:12:75|-1||info||No value in environment for: getExclude, using:
02-06-18 18:46:12:75|-1||info||No value in environment for: getInclude, using:
02-06-18 18:46:12:75|-1||info||No value in environment for: getLogfile, using: spy.log
02-06-18 18:46:12:75|-1||info||No value in environment for: getRealdriver, using: oracle.jdbc.driver.OracleDriver
02-06-18 18:46:12:75|-1||info||No value in environment for: getRealdriver2, using:
02-06-18 18:46:12:75|-1||info||No value in environment for: getRealdriver3, using:
02-06-18 18:46:12:75|-1||info||No value in environment for: getSpydriver, using: com.p6spy.engine.spy.P6SpyDriver
02-06-18 18:46:12:76|-1||info||No value in environment for: getDateformat, using: MM-dd-yy HH:mm:ss:SS
02-06-18 18:46:12:76|-1||info||No value in environment for: getDateformatter, using: java.text.SimpleDateFormat@4b551d9a
02-06-18 18:46:12:76|-1||info||No value in environment for: getStringmatcher, using: com.p6spy.engine.common.SubstringMatcher
02-06-18 18:46:12:76|-1||info||No value in environment for: getSQLExpression, using: null
02-06-18 18:46:12:76|-1||info||No value in environment for: getStringMatcherEngine, using: com.p6spy.engine.common.SubstringMatcher@3d121db3
02-06-18 18:46:12:76|-1||info||No value in environment for: getStackTraceClass, using:
02-06-18 18:46:12:77|-1||info||No value in environment for: getReloadProperties, using: false
02-06-18 18:46:12:77|-1||info||No value in environment for: getReloadPropertiesInterval, using: 60
02-06-18 18:46:12:77|-1||info||No value in environment for: getJNDIContextFactory, using: null
02-06-18 18:46:12:77|-1||info||No value in environment for: getJNDIContextProviderURL, using: null
02-06-18 18:46:12:77|-1||info||No value in environment for: getJNDIContextCustom, using: null
02-06-18 18:46:12:77|-1||info||No value in environment for: getRealDataSource, using: null
02-06-18 18:46:12:77|-1||info||No value in environment for: getRealDataSourceClass, using: null
02-06-18 18:46:12:77|-1||info||No value in environment for: getRealDataSourceProperties, using: null
02-06-18 18:46:12:78|-1||info||No value in environment for: getDeregisterDrivers, using: false
02-06-18 18:46:12:78|-1||info||No value in environment for: getExecutionThreshold, using: 0
02-06-18 18:46:12:78|-1||info||No value in environment for: getExcludecategories, using: info,debug,result,batch,statement
02-06-18 18:46:12:78|-1||info||No value in environment for: getIncludecategories, using:
--ここまでで終了--

素人考えなのですが、本来はこの次にstatementが出るのでは・・・と思っています。

該当のソースコード

p6spy周りの設定は、minokubaさんという方がブログで「[p6spy]p6spy手順メモとカスタマイズ」というタイトルで書かれていた内容を参考にしました。
iBATISは不使用なのでそこは何もしておりません。

■log4j.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >

<appender name="dailyRotation" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="./sample.log" /> <param name="Append" value="true" /> <param name="Encoding" value="Shift_JIS" /> <param name="DatePattern" value="'.'yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%-5p] [%d{yyyy/MM/dd HH:mm:ss.SSS}] [%t] - %m%n" /> </layout> </appender> <logger name="p6spy"> <level value="DEBUG"/> <appender-ref ref="dailyRotation"/> </logger> <root> <appender-ref ref="dailyRotation" /> </root> </log4j:configuration>

■spy.properties
(デフォルトから変更した部分のみ)
#oracle driver
realdriver=oracle.jdbc.driver.OracleDriver (#を外しました)
#commit, rollback and result are valid values
excludecategories=info,debug,result,batch,statement (statement
を足しました)
appender=jp.gr.java_conf.minokuba.p6spy.engine.logging.appender.CustomizedLog4jLogger (1行追加しました)

■CustomizedLog4jLogger
minokubaさんのブログに載っていたものを丸々使用しました。

■sqlを実行しているjavaソース部分
public static boolean serchreferral(String referral_id) throws Exception {
boolean result;
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
int COUNTID = 0;

// ユーザ名 String user = "SCOTT"; // パスワード String pass = "oracle"; // サーバ名 String servername = "localhost"; // SID String sid = "oraclecsi"; try { //Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("com.p6spy.engine.spy.P6SpyDriver"); //----------------- // 接続 //----------------- connection = DriverManager.getConnection("jdbc:oracle:thin:@" + servername + ":1521:" + sid, user, pass); statement = connection.createStatement(); //----------------- // SQLの発行 //----------------- //ユーザー情報のテーブル resultSet = statement.executeQuery("SELECT COUNT(*) AS COUNTID FROM Sample WHERE INTRODUCTIONCODE = '1'"); // 値の取得 while (resultSet.next()) { COUNTID = resultSet.getInt("COUNTID"); } if (COUNTID > 0) { result = true; } else { result = false; } } finally { //接続を切断する if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } return result; }

補足情報(FW/ツールのバージョンなど)

バージョン
java 8
eclipse 4.4
p6spy 1.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

spy.properties にて、

excludecategories=info,debug,result,batch,statement (statement
を足しました)

statementを足してしまうと、ステートメントの出力が出ないかと。

http://p6spy.readthedocs.io/en/latest/configandusage.html

投稿2018/02/09 03:41

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

情報が古いですが、以下のは参考になりませんか?
P6spyでSQLを出力させる

投稿2018/02/08 04:38

unz.hori

総合スコア1057

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問