diff options
author | epbugaev <epbugaev@yandex-team.com> | 2023-02-13 19:39:57 +0300 |
---|---|---|
committer | epbugaev <epbugaev@yandex-team.com> | 2023-02-13 19:39:57 +0300 |
commit | 243a672a56f96b4fb637f3fe1f749e7b8c576530 (patch) | |
tree | bc4b88c25aaaf4a503baba5e0606cab1a1d76f22 | |
parent | 89af9a64e9df437b1b1475c0376209be8b8f8c40 (diff) | |
download | ydb-243a672a56f96b4fb637f3fe1f749e7b8c576530.tar.gz |
Add unified_agent backend for yql logging
Add unified agent log backend for yql
-rw-r--r-- | ydb/library/yql/utils/log/log.cpp | 45 | ||||
-rw-r--r-- | ydb/library/yql/utils/log/proto/logger_config.proto | 1 |
2 files changed, 41 insertions, 5 deletions
diff --git a/ydb/library/yql/utils/log/log.cpp b/ydb/library/yql/utils/log/log.cpp index b4eb6833525..bc671437820 100644 --- a/ydb/library/yql/utils/log/log.cpp +++ b/ydb/library/yql/utils/log/log.cpp @@ -5,7 +5,7 @@ #include <library/cpp/logger/stream.h> #include <library/cpp/logger/system.h> #include <library/cpp/logger/composite.h> - +#include <library/cpp/logger/backend_creator.h> #include <util/datetime/systime.h> #include <util/generic/strbuf.h> #include <util/stream/format.h> @@ -150,6 +150,33 @@ NYql::NProto::TLoggingConfig::TLogDestination CreateLogDestination(const TString return destination; } +class TYqlUaLogBackendCreatorInitContext : public ILogBackendCreator::IInitContext { +public: + TYqlUaLogBackendCreatorInitContext(const TString& loggerType, const TString& target = TString()) + : LoggerType(loggerType) + , Target(target) + {} + + virtual bool GetValue(TStringBuf name, TString& var) const override { + if (name == "LoggerType" && !LoggerType.empty()) { + var = LoggerType; + return true; + } else if (name == "Target" && !Target.empty()) { + var = Target; + return true; + } + return false; + } + + virtual TVector<THolder<IInitContext>> GetChildren(TStringBuf /*name*/) const override { + return TVector<THolder<IInitContext>>(); + } + +private: + TString LoggerType; + TString Target; +}; + } // namspace namespace NYql { @@ -280,25 +307,33 @@ void InitLogger(const NProto::TLoggingConfig& config, bool startAsDaemon) { backends.emplace_back(CreateLogBackend("cerr", LOG_MAX_PRIORITY, false)); } - for (const auto& logDestionation : config.GetLogDest()) { + for (const auto& logDest : config.GetLogDest()) { // Generate the backend we need and temporary store it - switch (logDestionation.GetType()) { + switch (logDest.GetType()) { case NProto::TLoggingConfig::STDERR: case NProto::TLoggingConfig::STDOUT: case NProto::TLoggingConfig::CONSOLE: { if (!startAsDaemon) { - backends.emplace_back(CreateLogBackend(ConvertDestinationType(logDestionation.GetType()), LOG_MAX_PRIORITY, false)); + backends.emplace_back(CreateLogBackend(ConvertDestinationType(logDest.GetType()), LOG_MAX_PRIORITY, false)); } break; } case NProto::TLoggingConfig::FILE: { - backends.emplace_back(CreateLogBackend(logDestionation.GetTarget(), LOG_MAX_PRIORITY, false)); + backends.emplace_back(CreateLogBackend(logDest.GetTarget(), LOG_MAX_PRIORITY, false)); break; } case NProto::TLoggingConfig::SYSLOG: { backends.emplace_back(MakeHolder<TSysLogBackend>(GetProgramName().data(), TSysLogBackend::TSYSLOG_LOCAL1)); break; } + default: { + TYqlUaLogBackendCreatorInitContext creatorContext(NProto::TLoggingConfig::ELogTo_Name(logDest.GetType()), + logDest.GetTarget()); + if (auto creator = ILogBackendCreator::Create(creatorContext)) { + backends.emplace_back(creator->CreateLogBackend()); + } + break; + } } } diff --git a/ydb/library/yql/utils/log/proto/logger_config.proto b/ydb/library/yql/utils/log/proto/logger_config.proto index 668a2d23053..35448dee78f 100644 --- a/ydb/library/yql/utils/log/proto/logger_config.proto +++ b/ydb/library/yql/utils/log/proto/logger_config.proto @@ -8,6 +8,7 @@ message TLoggingConfig { CONSOLE = 3; FILE = 4; SYSLOG = 5; + YQL_UA_LOGGER = 6; } enum ELevel { |