aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorepbugaev <epbugaev@yandex-team.com>2023-02-13 19:39:57 +0300
committerepbugaev <epbugaev@yandex-team.com>2023-02-13 19:39:57 +0300
commit243a672a56f96b4fb637f3fe1f749e7b8c576530 (patch)
treebc4b88c25aaaf4a503baba5e0606cab1a1d76f22
parent89af9a64e9df437b1b1475c0376209be8b8f8c40 (diff)
downloadydb-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.cpp45
-rw-r--r--ydb/library/yql/utils/log/proto/logger_config.proto1
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 {