복붙노트

[SPRING] 데이터베이스와 통신되는 SQL 로깅

SPRING

데이터베이스와 통신되는 SQL 로깅

내 웹 응용 프로그램에 대한 SQL 로거에서 일하고 있습니다. 내가 GUI를 통해 사용자 상호 작용에 의해 해고 된 SQL 쿼리를 기록 할 수 있기를 원합니다. 저는 Maven과 mybatis와 협력하여 Spring 환경에서 작업하고 있습니다. 내 webapp을 war로 패키징하고 tomcat에 배포합니다.

SQL을 직접 사용하여 데이터베이스에 액세스 할 수 있기를 원합니다. Log4j와 같은 SocketAppender / HTMLAppender를 사용하고 쿼리를 게시하여 다른 비 SQL 사용자가 직접 편집하거나 쿼리에서 가비지를 제거하여 채워진 데이터를 볼 수 있도록 쿼리를 게시 할 수 있습니다.

SQL을 로깅 할 수있는 몇 가지 로거 도구가 있습니다.

내가 구체적으로 찾고있는 것 :

해결법

  1. ==============================

    1.이런 경우에는 jdbcdslog-exp를 사용합니다.

    이런 경우에는 jdbcdslog-exp를 사용합니다.

    클래스 경로에 jdbcdslog-1.0.6.2.jar을 추가하십시오.

    log4j 구성에 범주를 추가하십시오 (원한다면 ResultSetLogger에 대한 INFO 설정 - OutOfMemory에주의하십시오)

    <category name="org.jdbcdslog.StatementLogger">
      <priority value="INFO"/>
    </category>  
    <category name="org.jdbcdslog.ResultSetLogger">
      <priority value="FATAL"/>
    </category>
    

    명령문 로깅을 런타임으로 전환해야하는 경우 log4j를 다음과 같이 시작할 수 있습니다.

    PropertyConfigurator.configureAndWatch("log4j.xml", 60000);
    

    jdbc 연결 매개 변수 변경 (여기 jboss의 hsql 예제)

    ...에서

    <connection-url>jdbc:hsqldb:hsql://localhost:1801</connection-url>
    <driver-class>org.hsqldb.jdbcDriver</driver-class>
    

    <connection-url>jdbc:jdbcdslog:hsqldb:hsql://localhost:1801;targetDriver=org.hsqldb.jdbcDriver</connection-url>
    <driver-class>org.jdbcdslog.DriverLoggingProxy</driver-class>
    
  2. from https://stackoverflow.com/questions/17939376/log-sql-that-is-communicated-with-the-database by cc-by-sa and MIT license