2015년 8월 10일 월요일

MyBatis에서 사용하는 SQL의 로그를 찍자. log4jdbc-log4j2


과거에는 주로 log4jdbc를 이용했지만, log4jdbc-log4j2가 성능면에서 더 낫다고 해서 요즘은 주로 아래와 같이 설정해서 사용 중.






댓글 18개:

  1. 안녕하세요 저자님
    이책을 구매해서 정독하고 있는데요.
    root-context.xml 에서 datasource 설정하는 부분에서 driverClassName를 초기화 할 수 없다고 계속 에러가 나는데 혹시 왜그런지 알 수 있을까요?Property 'driverClassName' threw exception; nested exception is java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.sql.jdbcapi.DriverSpy

    답글삭제
  2. 드라이버의 클래스의 이름을 못 찾는 경우는 JDBC드라이버가 제대로 설정되지 않은 경우입니다. 프로젝트의 Build Path나 메이븐 등을 이용해서 JDBC드라이버를 추가하셔야 합니다.


    mysql
    mysql-connector-java
    5.1.6


     가 정상적으로 추가되었는지.. 확인하시고, jar파일이 올바르게 추가되었는지 확인 부탁드립니다.

    답글삭제
  3. http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.6
    를 참고하세요^^

    답글삭제
  4. 작성자가 댓글을 삭제했습니다.

    답글삭제
  5. 작성자가 댓글을 삭제했습니다.

    답글삭제
  6. 작성자가 댓글을 삭제했습니다.

    답글삭제
  7. 오 저자님 홈페이지였구나 -_-;
    Property 'driverClassName' threw exception; nested exception is java.lang.NoClassDefFoundError: Unable to find Log4j2 as default logging library. Please provide a logging library and configure a valid spyLogDelegator name in the properties file.
    ERROR: org.springframework.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@2669b199] to prepare test instance [org.zerock.web.MemberDAOTest@2474f125]
    java.lang.IllegalStateException: Failed to load ApplicationContext

    저자님 저도 같은 에러 나는데 살려주십시오..
    커넥터 J 라이브러리 잘 설정되어있고




    mysql
    mysql-connector-java
    5.1.38


    이렇게 pom.xml 파일에 추가도 되어있습니다!

    답글삭제
    답글
    1. 현재 프로젝트에

      - log4j-api-2.0.1.jar
      - log4j-core-2.0.1.jar

      라이브러리가 추가되어 있는지 확인 좀 부탁드려요

      만일 작성되어 있어도 동작하지 않거든 제게 메일로 프로젝트를 잠깐 보내주셔도 됩니다.

      삭제
    2. https://www.youtube.com/channel/UCrqnjM3zPB4BedmAXkzWs2A

      에 설정 관련 동영상을 추가해 두었습니다. 참고해 주세요^^

      삭제
  8. 작성자가 댓글을 삭제했습니다.

    답글삭제
  9. 작성자가 댓글을 삭제했습니다.

    답글삭제
  10. 안녕하세요. 책을 보다 궁금한 점이 있어서 문의 드립니다.
    우선 책을 보고, 여러 문서를 검색해본것을 바탕으로 제가 이해한데로 적어보겠습니다.
    facade 인 slf4j 를 이용하였고
    jcl-over-slf4j, slf4j-log4j12, logback-class 를
    각 구현체에 바인딩을 하기 위해 설정하였으며,
    예제 상에서는 logback 로 로그를 찍는다고 이해했습니다.
    logback 만을 사용하려는 경우 log4j 관련된 부분을 제거하여도 관계없을까요?
    ( 일단 jcl-over-slf4j 는 지우니까 톰켓이 안올라가네요 ;;; )

    답글삭제
    답글
    1. 저 역시 개인적으로 slf4j, logback만을 사용할 수 있다고 생각했는데요.. 실제로 해 보면 제대로 동작하지 못하더군요..

      말씀하신대로 원칙대로로만 log4j의 설정은 별 의미가 없습니다. 지우시는 것도 가능하다고 생각합니다.

      삭제
    2. 저 역시 개인적으로 slf4j, logback만을 사용할 수 있다고 생각했는데요.. 실제로 해 보면 제대로 동작하지 못하더군요..

      말씀하신대로 원칙대로로만 log4j의 설정은 별 의미가 없습니다. 지우시는 것도 가능하다고 생각합니다.

      삭제
  11. 작성자가 댓글을 삭제했습니다.

    답글삭제
  12. 6.0.5 버전에서는 에러가 납니다.

    mysql
    mysql-connector-java
    6.0.5


    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

    이 에러가 나는데 아무리 찾아도 해결방법이없네요 . 5.0.x 로 낮춰서 해도 안되고 ..

    답글삭제
    답글
    1. 돌아는 가게 됏는데 에러메시지 저거 뜨는건 괜찮을까요 ?

      삭제
  13. jUnit 테스트 할때만 마이바티스 로그가 찍히고
    일반적으로 서버 구동할때는 쿼리 로그가 찍히지 않습니다.
    원래 이런건가요?

    답글삭제