DataNucleusのJDOの実装を使用してデータベースにアクセスする操作可能なJavaアプリケーションがあると仮定すると、データベースに対して行われたすべてのSQL照会を代行受信できますか?その目的は、それらの統計を実行し、ログ/トレースを保持することです。すべてのDataNucleusのJDO SQLクエリを傍受することは可能ですか?
答えて
あなたは簡単に
JDO2 InstanceLifecycleListenersはあなたがイベントをインターセプトできるようになるが、私はSQLを考えていない(http://www.datanucleus.org/products/datanucleus/logging.htmlを参照)カテゴリDataNucleus.Datastore.NativeをオンにすることでDataNucleusのからのすべてのSQL文のログを取得することがあり文は
あなたはまた、SQLプロファイリングツールのためのアプリサーバーに見ることができます...が利用できるようになります。たとえば、GlassFishではSQLTraceListenerの実装を接続プールにアタッチできます。あなたはDataNucleusのでjava.util.loggingまたはLog4jを使用することができますhttp://docs.oracle.com/cd/E18930_01/html/821-2418/giyck.html#giygg
Log4jの
を参照してください。 Log4jの設定について説明します。
log4j.properties
# Define the destination and format of our logging
log4j.rootCategory=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n
# DataNucleus Categories
log4j.category.DataNucleus=ALL
最後の行は、すべてのDataNucleusのログを見るためにINFOまたはALLにレベルのしきい値を割り当てます。 DataNucleusは一連のカテゴリを使用し、すべてのメッセージをこれらのカテゴリに記録します。詳細についてはSee hereをご覧ください。クエリ
log4j.category.DataNucleus.Datastore
に関連するすべてのメッセージ - - すべての一般的なデータストアのメッセージまたは
log4j.category.DataNucleus.JDO
- すべてのメッセージの一般的なJDOlog4j.category.DataNucleus
すべてのルートであるあなたは、おそらく
log4j.category.DataNucleus.Query
が必要DataNucleusログカテゴリ。は、あなたのCLASSPATHにlog4jを追加します。私は依存関係の管理のためにGradle使用するので、ここで私のビルドスクリプトです:
build.gradle
configurations { all*.exclude group: "commons-logging", module: "commons-logging" } dependencies { // Logging compile 'org.slf4j:slf4j-api:1.7.+' runtime 'org.slf4j:slf4j-jdk14:1.7.+' runtime ('log4j:log4j:1.2.17') { exclude group: "com.sun.jdmk", module: "jmxtools" exclude group: "com.sun.jmx", module: "jmxri" exclude group: "javax.mail", module: "mail" exclude group: "javax.jms", module: "jms" } }
アプリケーションが
としてJVMパラメータを設定し、起動時にLog4Jの設定ファイルを提供するために、-Dlog4j.configuration=file:log4j.properties
あなたがのJavaEEアプリケーション・サーバー内で実行されている場合、これはあなたのために行うことができます。または、Spring WebMVCを使用している場合は、WEB-INFの中にlog4j.propertiesを置き、次のリスナーをデプロイメント記述子に追加します。
web.xmlの
<!-- The definition of the Log4j Configuration --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param>
- 1. サードパーティアプリケーションのWIN32例外を傍受することは可能ですか?
- 2. eclipseでOpen Fileメニューを傍受することは可能ですか?
- 3. Datanucleus、JDOと実行可能なjar - それを行う方法?
- 4. Datanucleus(JDO)用のTomcat JNDIリソース
- 5. このSQLクエリを高速化することは可能ですか?
- 6. JDO/DataNucleusとのコンテナ管理トランザクション
- 7. DataNucleusのJDO実装からテーブルを空にするには?
- 8. datanucleus/jdoを使ってコレクションをmongodbにマップするには?
- 9. フラスコ内のすべての例外を傍受するには?
- 10. このSQLクエリはJPA2 critera APIで可能ですか? TBL FROM
- 11. SQLの統計クエリ - これはNHibernate LINQで可能ですか?
- 12. SharePoint:ドキュメントがクライアントに返される前にドキュメントを傍受/変更することは可能ですか?
- 13. PHPの利用を傍受する悪用可能な関数
- 14. JDO @ DataNucleusの無制限の文字列ですか? (H2 DB)
- 15. このように7つのSQLクエリを単一クエリにすることは可能ですか?
- 16. Gmailの受信トレイからすべてのメールを取得することは可能ですか?
- 17. JUnitのアサート機能を傍受する
- 18. コンソールは私のアサートメッセージをすべて傍受しています
- 19. このクエリは可能ですか?
- 20. WPFアプリケーションへのすべてのマウスクリックを傍受する
- 21. Rubyのすべての例外を傍受する
- 22. OSXのすべての発信トラフィックを傍受する
- 23. AngularJSはすべての$ httpリクエストを傍受します
- 24. クラスのすべてのサブクラスを取得することは可能ですか?
- 25. すべてのhttp、httpsトラフィックを傍受する方法はありますか
- 26. このビューのクエリをよりコンパクトにすることは可能ですか?
- 27. ADのすべてのコンピュータをPythonで返すことは可能ですか
- 28. すべてのアクティブなサブスクリプションを表示することは可能ですか
- 29. すべてのxcodeログを検索することは可能ですか
- 30. RhinoのJavaオブジェクトへの呼び出しを傍受する機能のようなセキュリティマネージャを実装することは可能ですか?