提交 559afe02 编写于 作者: V Vitaly Baranov

Retrieve logs from grpc library and pass them to our logging system.

上级 b8faa166
......@@ -160,6 +160,9 @@
<!-- Send/receive message size limits in bytes. -1 means unlimited -->
<max_send_message_size>-1</max_send_message_size>
<max_receive_message_size>-1</max_receive_message_size>
<!-- Enable if you want very detailed logs -->
<verbose_logs>false</verbose_logs>
</grpc>
<!-- Maximum number of concurrent queries. -->
......
......@@ -31,10 +31,6 @@
#include <grpc++/server_builder.h>
/// For diagnosing problems use the following environment variables:
/// export GRPC_TRACE=all
/// export GRPC_VERBOSITY=DEBUG
using GRPCService = clickhouse::grpc::ClickHouse::AsyncService;
using GRPCQueryInfo = clickhouse::grpc::QueryInfo;
using GRPCResult = clickhouse::grpc::Result;
......@@ -57,6 +53,39 @@ namespace ErrorCodes
namespace
{
/// Make grpc to pass logging messages to ClickHouse logging system.
void initGRPCLogging(const Poco::Util::AbstractConfiguration & config)
{
static std::once_flag once_flag;
std::call_once(once_flag, [&config]
{
static Poco::Logger * logger = &Poco::Logger::get("grpc");
gpr_set_log_function([](gpr_log_func_args* args)
{
if (args->severity == GPR_LOG_SEVERITY_DEBUG)
LOG_DEBUG(logger, "{} ({}:{})", args->message, args->file, args->line);
else if (args->severity == GPR_LOG_SEVERITY_INFO)
LOG_INFO(logger, "{} ({}:{})", args->message, args->file, args->line);
else if (args->severity == GPR_LOG_SEVERITY_ERROR)
LOG_ERROR(logger, "{} ({}:{})", args->message, args->file, args->line);
});
if (config.getBool("grpc.verbose_logs", false))
{
gpr_set_log_verbosity(GPR_LOG_SEVERITY_DEBUG);
grpc_tracer_set_enabled("all", true);
}
else if (logger->is(Poco::Message::PRIO_DEBUG))
{
gpr_set_log_verbosity(GPR_LOG_SEVERITY_DEBUG);
}
else if (logger->is(Poco::Message::PRIO_INFORMATION))
{
gpr_set_log_verbosity(GPR_LOG_SEVERITY_INFO);
}
});
}
grpc_compression_algorithm parseCompressionAlgorithm(const String & str)
{
if (str == "none")
......@@ -1604,6 +1633,7 @@ GRPCServer::~GRPCServer()
void GRPCServer::start()
{
initGRPCLogging(iserver.config());
grpc::ServerBuilder builder;
builder.AddListeningPort(address_to_listen.toString(), makeCredentials(iserver.config()));
builder.RegisterService(&grpc_service);
......
<yandex>
<grpc_port>9100</grpc_port>
<grpc replace="replace"/>
<grpc replace="replace">
<!-- Enable if you want very detailed logs -->
<verbose_logs>false</verbose_logs>
</grpc>
</yandex>
......@@ -20,5 +20,8 @@
<!-- Default compression level (applied if client doesn't specify another level).
Supported levels: none, low, medium, high -->
<compression_level>high</compression_level>
<!-- Enable if you want very detailed logs -->
<verbose_logs>false</verbose_logs>
</grpc>
</yandex>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册