Ведение журнала запросов Cassandra через конфигурацию spring

Есть ли простой способ включить ведение журнала запросов на cassandra через конфигурацию xml? Я использую пространство имен:

xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"

но я не могу найти подходящего решения. Я пытался включить трассировку через cqlsh, но это не работает для моего приложения.

Я также пытался добавить строку:

<logger name="com.datastax.driver.core.QueryLogger.NORMAL" level="TRACE" />

Но тоже не работает.

Мои версии: spring-data-cassandra-1.4.0 cassandra: 2.1.5


person Marcin Erbel    schedule 19.12.2016    source источник


Ответы (4)


Перейдите по этой ссылке и проверьте, добавили ли вы регистратор запросов в определение вашего кластера, как указано:

Cluster cluster = ...
QueryLogger queryLogger = QueryLogger.builder(cluster)
    .withConstantThreshold(...)
    .withMaxQueryStringLength(...)
.build();
cluster.register(queryLogger);

Дайте мне знать, если это помогло.

person Matija Gobec    schedule 19.12.2016
comment
любое решение application.properties? - person Mojtabye; 04.06.2017

Добавьте QueryLogger @Bean и получите Cluster @Autowired в:

@Bean
public QueryLogger queryLogger(Cluster cluster) {
    QueryLogger queryLogger = QueryLogger.builder()
            .build();
    cluster.register(queryLogger);
    return queryLogger;
}

(+ очевидно настроить QueryLogger.Builder как требуется).

Не забудьте установить уровни журнала DEBUG/TRACE в вашем application.yml:

logging.level.com.datastax.driver.core.QueryLogger.NORMAL: DEBUG
logging.level.com.datastax.driver.core.QueryLogger.SLOW: TRACE

Вуаля!

person Hartmut    schedule 17.01.2018
comment
На самом деле это лучший способ, потому что он также работает, если вы используете CassandraClusterFactoryBean для инициализации своего кластера. - person Ivan Kaloyanov; 27.08.2019

Если вы используете Spring Data Cassandra 2.4+, QueryLogger больше не доступен, он был заменен на RequestTracker, который можно настроить в application.yml или переопределить в зависимости от ваших потребностей.

Драйвер Java предоставляет интерфейс RequestTracker. Вы можете указать собственную реализацию или использовать предоставленную реализацию RequestLogger, настроив свойства в пространстве имен datastax-java-driver.advanced.request-tracker. RequestLogger отслеживает каждый запрос, выполняемый вашим приложением, и имеет параметры для включения регистрации успешных, неудачных и медленных запросов. Используйте регистратор медленных запросов для выявления запросов, производительность которых не соответствует заданной вами.

Конфигурация:

datastax-java-driver.advanced.request-tracker {
  class = RequestLogger

  logs {
    # Whether to log successful requests.
    success.enabled = true

    slow {
      # The threshold to classify a successful request as "slow". If this is unset, all
      # successful requests will be considered as normal.
      threshold = 1 second

      # Whether to log slow requests.
      enabled = true
    }

    # Whether to log failed requests.
    error.enabled = true

    # The maximum length of the query string in the log message. If it is longer than that, it
    # will be truncated.
    max-query-length = 500

    # Whether to log bound values in addition to the query string.
    show-values = true

    # The maximum length for bound values in the log message. If the formatted representation of
    # a value is longer than that, it will be truncated.
    max-value-length = 50

    # The maximum number of bound values to log. If a request has more values, the list of
    # values will be truncated.
    max-values = 50

    # Whether to log stack traces for failed queries. If this is disabled, the log will just
    # include the exception's string representation (generally the class name and message).
    show-stack-traces = true
}

Подробнее.

person Marius Jaraminas    schedule 11.03.2021
comment
Я использую это. Но мой файл application.conf не обнаруживается. Есть ли способ сделать эту конфигурацию в моем файле spring application.properties? - person Kekar; 05.07.2021

Если вы используете Spring Data для Apache Cassandra версии 2.0 или выше, вы можете использовать конфигурацию ведения журнала для активации ведения журнала CQL. Установите уровень журнала org.springframework.data.cassandra.core.cql.CqlTemplate на DEBUG, не нужно возиться с QueryLogger:

-Dlogging.level.org.springframework.data.cassandra.core.cql.CqlTemplate=DEBUG

Это, конечно, можно постоянно делать в файле application.properties.

person Abhijit Sarkar    schedule 02.04.2020
comment
За исключением того, что читаемый toString() не был реализован в операторе .. - person Fabien MIFSUD; 30.06.2020
comment
@Abhijit, в каком файле я должен установить уровень журнала? - person kayesh parvez; 30.10.2020
comment
@kayeshparvez Прочитайте последнюю строку моего ответа еще раз или посмотрите другие ответы. - person Abhijit Sarkar; 30.10.2020
comment
@Abhijit Если я поставлю это в application.properties, то ide не сможет разрешить эту строку. ide это интеллект - person kayesh parvez; 30.10.2020