前提・実現したいこと
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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。