SpringBoot에서 mybatis / ibatis를 사용할 때 인쇄 SQL 기록
콘솔은 mybatis / ibatis에 해당하는 SQL을 인쇄합니다.
구성 파일에 다음 구성을 추가하고 콘솔에서 SQL 인쇄 로그를 보려는 로그 출력 레벨을 조정하십시오.
(예를 들어 .properties의 구성 형식, yaml 형식 인 경우 직접 수정할 수 있음)
# 配置sql日志的打印级别(这里设置成自己mapper的所在路径)
logging.level.com.xxx.jay.cust.mapper=info
호스트의 로그 파일에 mybatis / ibatis에 해당하는 SQL을 인쇄합니다.
첫 번째 구성을 완료 한 후에도 서비스에 해당하는 sql이 호스트의 로그 파일 (app.log 또는 catalina.out)에 여전히 인쇄되지 않는 것으로 확인되었습니다. 그 이유는 구성 파일에 구성된 mybatis 인쇄 로그의 출력 모드가 org.apache.ibatis.logging.stdout.StdOutImpl을 사용
하기 때문입니다 .StdOutImpl 클래스를 확인하면 인쇄가 System.out.println ()임을 알 수 있습니다. 콘솔 출력이 인쇄되므로 SQL은 호스트의 console.log 아래에있는 로그에 해당합니다.
# 配置mybatis输出日志的方式,使用的为默认的StdOutImpl
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
StdOutImpl에 따라 mybatis 인쇄 로그의 출력 모드를 사용자 정의하고 구성 파일에서 자체 출력 모드 클래스로 구성 할 수 있습니다. 호스트의 로그 파일 (app.log 또는 catalina.out)에 서비스에 해당하는 SQL을 인쇄하여 온라인 문제를 쉽게 찾을 수 있습니다.
/**
* @Author: jay
* 定义mybatis的sql打印输出方式
* @Date: 2020/11/30 14:48
*/
public class SqlLogUtils implements Log{
private final java.util.logging.Logger log;
public SqlLogUtils(String clazz) {
log = Logger.getLogger(clazz);
}
@Override
public boolean isDebugEnabled() {
return true;
}
@Override
public boolean isTraceEnabled() {
return false;
}
@Override
public void error(String s, Throwable e) {
log.log(Level.SEVERE, s, e);
}
@Override
public void error(String s) {
log.log(Level.SEVERE, s);
}
@Override
public void debug(String s) {
if(s.charAt(2) == '>' || s.charAt(0) == '<'){
log.log(Level.INFO, s);
}
}
@Override
public void trace(String s) {
log.log(Level.FINER, s);
}
@Override
public void warn(String s) {
log.log(Level.WARNING, s);
}
}
# 配置mybatis输出日志的方式,指定使用自己定义的类。
mybatis.configuration.log-impl=com.xxx.jay.utils.SqlLogUtils
위의 두 단계를 완료하십시오. 1. 원하는 mybatis 출력 로그 유형을 정의하십시오. 2. 구성 파일이 새로 정의 된 클래스로 구성됩니다.
mybatis / ibatis 사용시 출력 된 sql이 호스트 로그에 출력됨을 알 수 있습니다.