首页 > 解决方案 > 在 Clickhouse 客户端中禁用 SQL 日志记录

问题描述

我需要为Clickhouse 客户端禁用 SQL 日志记录以进行控制台。我在代码中看不到启用日志记录的任何地方。它只是默认记录,真的很烦人。

客户端初始化

services.AddSingleton<IClickHouseClientFactory, ClickHouseClientFactory>();

将文本转储到控制台的示例命令

var res = _clickHouseDatabase.ExecuteSelectCommand("SELECT max(timestamp) FROM organic_trades");

这就是控制台的日志

info: ClickHouse.Net.ClickHouseQueryLogger[0]
      Clickhouse query: SELECT max(timestamp) FROM mm_latoken_trades completed in 72 ms.

请建议我在哪里可以关闭注销

标签: c#asp.net-coreclickhouse

解决方案


好好看看 GitHub 上的源码

> ExecuteSelectCommand

调用具有此定义的 Execute:https ://github.com/ilyabreev/ClickHouse.Net/blob/67f656098422dd0e6c311972dbcafafcee01703e/src/ClickHouse.Net/ClickHouseDatabase.cs#L290

其中特别有这一行:

_queryLogger?.AfterQuery(commandText);

_queryLogger 的实现在这里:https ://github.com/ilyabreev/ClickHouse.Net/blob/67f656098422dd0e6c311972dbcafafcee01703e/src/ClickHouse.Net/ClickHouseQueryLogger.cs#L6

我在代码中看不到任何配置切换以跳过日志记录。

我猜你可以调用ClickHouseDatabase构造函数,传入一个空的IClickHouseQueryLogger

  public ClickHouseDatabase(
        ClickHouseConnectionSettings connectionSettings,
        IClickHouseCommandFormatter commandFormatter, 
        IClickHouseConnectionFactory connectionFactory,
        IClickHouseQueryLogger queryLogger,
        IPropertyBinder propertyBinder)
    {
        _connectionSettings = connectionSettings;
        _commandFormatter = commandFormatter;
        _connectionFactory = connectionFactory;
        _queryLogger = queryLogger;
        _propertyBinder = propertyBinder;
    }

推荐阅读