This commit is contained in:
kssenii 2022-04-05 14:46:18 +02:00
parent 1fb9440d47
commit 83488b2d13
5 changed files with 21 additions and 7 deletions

View File

@ -197,7 +197,6 @@ void Loggers::buildLoggers(Poco::Util::AbstractConfiguration & config, Poco::Log
Poco::AutoPtr<OwnPatternFormatter> pf = new OwnPatternFormatter(color_enabled);
Poco::AutoPtr<DB::OwnFormattingChannel> log = new DB::OwnFormattingChannel(pf, new Poco::ConsoleChannel);
logger.warning("Logging " + console_log_level_string + " to console");
log->setLevel(console_log_level);
split->addChannel(log, "console");
}

View File

@ -434,6 +434,11 @@ catch (...)
return getCurrentExceptionCode();
}
void LocalServer::setLogger(const String & logs_level)
{
config().setString("logger.level", logs_level);
updateLevels(config(), logger());
}
void LocalServer::processConfig()
{
@ -463,19 +468,19 @@ void LocalServer::processConfig()
|| config().has("send_logs_level")
|| config().has("logger.log"));
auto level = Poco::Logger::parseLevel(config().getString("log-level", config().getString("send_logs_level", "trace")));
auto level = config().getString("log-level", "trace");
if (config().has("server_logs_file"))
{
Poco::Logger::root().setLevel(level);
auto poco_logs_level = Poco::Logger::parseLevel(level);
Poco::Logger::root().setLevel(poco_logs_level);
Poco::Logger::root().setChannel(Poco::AutoPtr<Poco::SimpleFileChannel>(new Poco::SimpleFileChannel(server_logs_file)));
}
else if (logging)
else if (logging || is_interactive)
{
// force enable logging
config().setString("logger", "logger");
Poco::Logger::root().setLevel(level);
// sensitive data rules are not used here
auto log_level_default = is_interactive && !logging ? "none" : level;
config().setString("logger.level", config().getString("log-level", config().getString("send_logs_level", log_level_default)));
buildLoggers(config(), logger(), "clickhouse-local");
}
else

View File

@ -46,6 +46,8 @@ protected:
void processConfig() override;
void setLogger(const String & logs_level) override;
private:
/** Composes CREATE subquery based on passed arguments (--structure --file --table and --input-format)
* This query will be executed first, before queries passed through --query argument

View File

@ -1298,6 +1298,13 @@ void ClientBase::processParsedSingleQuery(const String & full_query, const Strin
}
}
if (const auto * set_query = parsed_query->as<ASTSetQuery>())
{
const auto * logs_level_field = set_query->changes.tryGet(std::string_view{"send_logs_level"});
if (logs_level_field)
setLogger(logs_level_field->safeGet<String>());
}
processed_rows = 0;
written_first_block = false;
progress_indication.resetProgress();

View File

@ -95,6 +95,7 @@ protected:
std::optional<ProgramOptionsDescription> hosts_and_ports_description;
};
virtual void setLogger(const String &) { throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Method `initializeLogger()` is not implemented for `{}`", getName()); }
virtual void printHelpMessage(const OptionsDescription & options_description) = 0;
virtual void addOptions(OptionsDescription & options_description) = 0;
virtual void processOptions(const OptionsDescription & options_description,