Задать вопрос
@mikhailro

Как реализовать логирование JDBC?

Добрый день!

Мне необходимо реализовать логирование sql-запросов в java-приложении.
На проекте используется JDBC, JDK8
Хотел использовать log4jdbc, но, как я понимаю, он максимум поддерживает JDK 1.7

Важно, чтобы логирование было автоматическим, без необходимости что-либо писать при вызове запроса.
  • Вопрос задан
  • 325 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
@Vorh
Можно использовать datasource-proxy
Он позволяет логгировать все запросы, а так же если это не нужно, настроить логгирование только для "тяжелых запросов", которые выполняются больше n секунд по времени.
Запись в логе выглядит так:

Name:MyDS, Time:1, Success:True, Type:Statement, Batch:False, QuerySize:1, BatchSize:0, Query:["CREATE TABLE users (id INT, name VARCHAR(20))"], Params:[]
Name:MyDS, Time:0, Success:True, Type:Prepared, Batch:True, QuerySize:1, BatchSize:2, Query:["INSERT INTO users (id, name) VALUES (?, ?)"], Params:[(1=1,2=foo),(1=2,2=bar)]
Name:MyDS, Time:1, Success:True, Type:Prepared, Batch:True, QuerySize:1, BatchSize:2, Query:["INSERT INTO users (id, name) VALUES (?, ?)"], Params:[(1=3,2=FOO),(1=4,2=BAR)]
Name:MyDS, Time:3, Success:True, Type:Statement, Batch:False, QuerySize:1, BatchSize:0, Query:["SELECT COUNT(*) FROM users"], Params:[]


Примеры конфигураций и настройки можно посмотреть вот здесь

Простой пример конфигурации :
DataSource db = ProxyDataSourceBuilder
            .create(actualDataSource)
            .logQueryByCommons(INFO)    // or logQueryBySlf4j(INFO)
            .build();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы