1

DataNucleusのJDOの実装を使用してデータベースにアクセスする運用可能なJavaアプリケーションがあると仮定すると、データベースに対して行われたすべてのSQLクエリをインターセプトすることは可能ですか?それらの統計を実行し、ログ/トレースを保持することを目的としています。

4

2 に答える 2

5

カテゴリDataNucleus.Datastore.Nativeをオンにすることで、DataNucleusからすべてのSQLステートメントのログを簡単に取得できます(http://www.datanucleus.org/products/datanucleus/logging.htmlを参照) 。

JDO2 InstanceLifecycleListenersを使用すると、イベントをインターセプトできますが、SQLステートメントがそこで利用できるとは思いません...

また、SQLプロファイリングツールをアプリサーバーで探すこともできます。たとえば、GlassFishを使用すると、SQLTraceListener実装を接続プールにアタッチできます。http://docs.oracle.com/cd/E18930_01/html/821-2418/giyck.html#giyggを参照してください

于 2012-03-10T02:27:14.200 に答える
0

Log4j

DataNucleusでjava.util.loggingまたは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は一連のカテゴリを使用し、すべてのメッセージをこれらのカテゴリに記録します。詳細については、こちらをご覧ください。あなたはおそらく必要です

  • log4j.category.DataNucleus.Query-クエリに関連するすべてのメッセージ
  • log4j.category.DataNucleus.Datastore-すべての一般的なデータストアメッセージ
    または
  • log4j.category.DataNucleus.JDO-JDOに一般的なすべてのメッセージ

log4j.category.DataNucleusすべてのDataNucleusログカテゴリのルートです。

log4jをCLASSPATHに追加します。依存関係の管理に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"
    }    
}

アプリケーションの起動時にLog4J構成ファイルを提供するには、JVMパラメーターを次のように設定します。

-Dlog4j.configuration=file:log4j.properties

これは、JavaEEアプリケーションサーバー内で実行している場合に実行できます。または、Spring WebMVCを使用している場合は、log4j.propertiesをWEB-INF内に配置し、次のリスナーをデプロイメント記述子に追加します。

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>
于 2015-05-06T10:10:22.383 に答える