반응형
Spring Boot JDBC 템플릿
Spring Boot JDBC에 대한 매개 변수가 있는 로그 SQL 쿼리를 시도하고 있지만 로그에 세부 정보가 인쇄되지 않습니다.Spring Boot 1.5.8 버전을 사용하고 있습니다.제가 이 문제를 해결할 수 있도록 도와주세요.
application.properties:
spring.datasource.url=url
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
logging.level.org.springframework.jdbc.core.JdbcTemplate=debug
spring.datasource.type = com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=2
리포지토리:
@Repository
public class DataRepository {
private static Logger log = LoggerFactory.getLogger(DataRepository.class);
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;
public Data findDataObjet() throws Exception {
Map<String, Object> parameters = new HashMap<>();
parameters.put("id1", "mike");
parameters.put("id2", new Long(1));
String sqlString = "select * from table1 where id1 = ":id" and id2 = :id2";
log.info("Query:" + sqlString);//this log is printing
Data extObj = jdbcTemplate.query(sqlString, parameters, (rs) -> {
if (rs != null && rs.next()) {
Data innerObj = new Data();
innerObj.setName(rs.getString("name"));
return innerObj;
} else {
log.info("No records found:"+rs);
return null;
}
});
return extObj;
}
}
logback-spring.xml:
<appender name="dailyRollingFileAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${logsPath}DATA%d{MMddyyyy}.log
</FileNamePattern>
<maxHistory>4</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level
%logger{35}-%msg %n</Pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="dailyRollingFileAppender" />
</root>
해라
log4j.category.org.springframework.jdbc.core = TRACE
위의 문은 인바운드 매개 변수가 있는 SQL 쿼리도 인쇄합니다.
쿼리만 기록해야 하는 경우 다음을 사용합니다.
log4j.category.org.springframework.jdbc.core = DEBUG
다음을 사용하여 로그백 파일에서 활성화할 수 있습니다.
<logger name="org.springframework.jdbc.core.JdbcTemplate">
<level value="debug" />
</logger>
<logger name="org.springframework.jdbc.core.StatementCreatorUtils">
<level value="debug" />
</logger>
업데이트 : Springboot 2.x의 경우,
logging.level.org.springframework.jdbc.core=TRACE
감사합니다, 주궈웨이!
속성 파일에 다음을 추가해도 작동합니다.
logging.level.org.springframework.jdbc.core = TRACE
Spring-Boot 2.1.x 이후 속성을 설정해야 합니다.logging.level.org.springframework.jdbc.core=TRACE
문 및 매개 변수를 기록합니다.
응용 프로그램 속성에서 해당 문을 사용
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
spring.jpa.properties.hibernate.format_sql = true
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
언급URL : https://stackoverflow.com/questions/49068221/spring-boot-jdbc-template-sql-log
반응형
'source' 카테고리의 다른 글
Angular2 - 서비스를 사용하여 구성 요소 간에 데이터 공유 (0) | 2023.06.26 |
---|---|
SQL Server 2008 - 테이블 값 함수에서 사용자 정의 테이블 유형을 반환하는 방법 (0) | 2023.06.26 |
오라클에서 커밋되지 않은 읽기 옵션을 허용합니까? (0) | 2023.06.26 |
스프링 부트 테스트 - 여러 테스트가 단일 컨텍스트를 공유할 수 있습니까? (0) | 2023.06.26 |
여러 사용자 정의 사용자 분류법을 단일 URL에 결합 (0) | 2023.06.26 |