首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板SQL日志

模板SQL日志
EN

Stack Overflow用户
提问于 2018-03-02 11:29:33
回答 4查看 40.8K关注 0票数 16

我正在尝试使用params对Spring进行日志SQL查询,但它没有打印日志中的详细信息,我正在使用Spring 1.5.8 version.Please帮助我解决这个问题。

application.properties:

代码语言:javascript
复制
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

仓库:

代码语言:javascript
复制
@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:

代码语言:javascript
复制
<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>

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-06 09:46:44

试一试

代码语言:javascript
复制
log4j.category.org.springframework.jdbc.core = TRACE

上述语句还将打印带有入站参数的SQL查询。

如果只需要记录查询,请使用以下内容

代码语言:javascript
复制
log4j.category.org.springframework.jdbc.core = DEBUG

可以在您的logback文件中启用以下功能

代码语言:javascript
复制
<logger name="org.springframework.jdbc.core.JdbcTemplate">
  <level value="debug" />
</logger>

<logger name="org.springframework.jdbc.core.StatementCreatorUtils">
  <level value="debug" />
</logger>

更新:用于SpringBoot2.x的将是

代码语言:javascript
复制
logging.level.org.springframework.jdbc.core=TRACE

谢谢诸国维!

票数 45
EN

Stack Overflow用户

发布于 2018-11-30 17:09:45

在属性文件中添加以下内容也是有效的:

代码语言:javascript
复制
logging.level.org.springframework.jdbc.core = TRACE
票数 4
EN

Stack Overflow用户

发布于 2019-05-03 07:58:38

从Spring-Boot2.1.x开始,您必须设置属性:logging.level.org.springframework.jdbc.core=TRACE来记录语句和参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49068221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档