Я пытаюсь зарегистрировать SQL-запросы с параметрами для Spring Boot JDBC, но он не печатает подробности в журнале. Я использую версию 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 :

@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>
11
sunleo 2 Мар 2018 в 14:29

4 ответа

Лучший ответ

Пытаться

log4j.category.org.springframework.jdbc.core = TRACE

Вышеприведенный оператор будет также печатать SQL-запросы с входящими параметрами.

В случае, если вам нужно войти только запрос, используйте следующее

log4j.category.org.springframework.jdbc.core = DEBUG

Вы можете включить в свой файл logback с помощью следующих

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

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

Обновление: для Spring Boot 2.x это будет

logging.level.org.springframework.jdbc.core=TRACE

Спасибо zhuguowei!

24
Chids 12 Авг 2019 в 12:48

Попробуйте это утверждение в свойствах приложения

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
0
Elarbi Mohamed Aymen 6 Мар 2018 в 15:11

Начиная с Spring-Boot 2.1.x вы должны установить свойство: logging.level.org.springframework.jdbc.core=TRACE для записи оператора и параметров.

0
the hand of NOD 3 Май 2019 в 07:58

Добавление следующего в ваш файл свойств также работает:

logging.level.org.springframework.jdbc.core = TRACE
3
Pouriya Zarbafian 30 Ноя 2018 в 17:09