From c5fe9829b12759a8a083417913c2279ad5c6d36a Mon Sep 17 00:00:00 2001 From: exmy Date: Thu, 1 Jun 2023 14:12:44 +0800 Subject: [PATCH] [CH] Format log output for CH backend (#1746) What changes were proposed in this pull request? How was this patch tested? manual tests --- cpp-ch/local-engine/Common/Logger.cpp | 13 ++++++++++++- cpp-ch/local-engine/Parser/SerializedPlanParser.cpp | 8 ++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cpp-ch/local-engine/Common/Logger.cpp b/cpp-ch/local-engine/Common/Logger.cpp index 7e55ed681fde..9a3ce4f7661d 100644 --- a/cpp-ch/local-engine/Common/Logger.cpp +++ b/cpp-ch/local-engine/Common/Logger.cpp @@ -4,17 +4,28 @@ #include #include #include +#include +#include #include using Poco::AsyncChannel; using Poco::AutoPtr; using Poco::ConsoleChannel; +using Poco::PatternFormatter; +using Poco::FormattingChannel; void local_engine::Logger::initConsoleLogger(const std::string & level) { AutoPtr chan(new ConsoleChannel); - AutoPtr async_chann(new AsyncChannel(chan)); + + AutoPtr formatter(new PatternFormatter); + formatter->setProperty("pattern", "%Y-%m-%d %H:%M:%S.%i <%p> %s: %t"); + formatter->setProperty("times", "local"); + + AutoPtr format_channel(new FormattingChannel(formatter, chan)); + AutoPtr async_chann(new AsyncChannel(format_channel)); + Poco::Logger::root().setChannel(async_chann); Poco::Logger::root().setLevel(level); } diff --git a/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp b/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp index 2d5e46caf490..e357977b981d 100644 --- a/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp +++ b/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp @@ -639,7 +639,7 @@ QueryPlanPtr SerializedPlanParser::parse(std::unique_ptr plan) pb_util::JsonOptions options; std::string json; pb_util::MessageToJsonString(*plan, &json, options); - LOG_DEBUG(&Poco::Logger::get("SerializedPlanParser"), "substrait plan:{}", json); + LOG_DEBUG(&Poco::Logger::get("SerializedPlanParser"), "substrait plan:\n{}", json); } parseExtensions(plan->extensions()); if (plan->relations_size() == 1) @@ -2009,7 +2009,7 @@ QueryPlanPtr SerializedPlanParser::parse(const std::string & plan) if (logger->debug()) { auto out = PlanUtil::explainPlan(*res); - LOG_DEBUG(logger, "clickhouse plan:{}", out); + LOG_DEBUG(logger, "clickhouse plan:\n{}", out); } return std::move(res); } @@ -2348,7 +2348,7 @@ ActionsDAGPtr ASTParser::convertToActions(const NamesAndTypesList & name_and_typ ASTPtr ASTParser::parseToAST(const Names & names, const substrait::Expression & rel) { - LOG_DEBUG(&Poco::Logger::get("ASTParser"), "substrait plan:{}", rel.DebugString()); + LOG_DEBUG(&Poco::Logger::get("ASTParser"), "substrait plan:\n{}", rel.DebugString()); if (!rel.has_scalar_function()) throw Exception(ErrorCodes::BAD_ARGUMENTS, "the root of expression should be a scalar function:\n {}", rel.DebugString()); @@ -2579,7 +2579,7 @@ void LocalExecutor::execute(QueryPlanPtr query_plan) .compile_expressions = CompileExpressions::yes}, .process_list_element = query_status}); query_pipeline = QueryPipelineBuilder::getPipeline(std::move(*pipeline_builder)); - LOG_DEBUG(&Poco::Logger::get("LocalExecutor"), "clickhouse pipeline:{}", QueryPipelineUtil::explainPipeline(query_pipeline)); + LOG_DEBUG(&Poco::Logger::get("LocalExecutor"), "clickhouse pipeline:\n{}", QueryPipelineUtil::explainPipeline(query_pipeline)); auto t_pipeline = stopwatch.elapsedMicroseconds(); executor = std::make_unique(query_pipeline); auto t_executor = stopwatch.elapsedMicroseconds() - t_pipeline;