본문 바로가기
WEB/SERVER

마이바티스에서 특정 sql 만 로그 안 나오게 하는 방법

by iiaii 2023. 4. 17.
반응형

MyBatis에서는 로그 출력을 설정할 수 있는 **log4j**나 **logback**과 같은 로깅 프레임워크를 사용합니다. 따라서 로그 출력을 조정하려면 로깅 프레임워크의 설정을 변경해야 합니다.

특정 SQL 문장의 로그 출력을 조정하려면 **log4j**나 **logback**의 설정 파일에서 해당 SQL 문장을 수행하는 MyBatis의 Mapper 클래스나 XML 파일의 패키지와 이름을 지정한 다음, 로그 레벨을 조정하면 됩니다. 예를 들어, 다음과 같은 설정을 logback.xml 파일에 추가하면 com.example.mapper.UserMapper 클래스의 selectUser 메서드가 수행될 때만 TRACE 레벨 이상의 로그가 출력되고, 그 외의 SQL 문장은 로그에서 제외됩니다.

<configuration>
  <logger name="com.example.mapper.UserMapper" level="TRACE"/>
  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

만약 특정 SQL 문장의 로그를 끄고 싶다면, 해당 SQL 문장이 포함된 Mapper 클래스나 XML 파일의 패키지와 이름을 지정한 다음, 로그 레벨을 **OFF**로 설정하면 됩니다. 예를 들어, 다음과 같은 설정을 logback.xml 파일에 추가하면 com.example.mapper.UserMapper 클래스의 selectUser 메서드에서 SQL 문장이 수행될 때 로그가 출력되지 않습니다.

<configuration>
  <logger name="com.example.mapper.UserMapper" level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </logger>
  <logger name="com.example.mapper.UserMapper.selectUser" level="OFF"/>
  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

위 예시에서, **com.example.mapper.UserMapper.selectUser**에 대한 로그는 **OFF**로 설정되어 있기 때문에 로그 출력이 되지 않습니다.

반응형