#include "backend_creator.h" #include namespace NUnifiedAgent { TLogBackendCreator::TLogBackendCreator() : TLogBackendCreatorBase("unified_agent") {} bool TLogBackendCreator::Init(const IInitContext& ctx) { if(TString socket = ctx.GetOrElse("Uri", TString())) { ClientParams = MakeHolder(socket); } else { Cdbg << "Uri not set for unified_agent log backend" << Endl; return false; } TString secretKey; ctx.GetValue("SharedSecretKey", secretKey); if (secretKey) { ClientParams->SharedSecretKey = secretKey; } ctx.GetValue("MaxInflightBytes", ClientParams->MaxInflightBytes); ctx.GetValue("GrpcSendDelay", ClientParams->GrpcSendDelay); size_t rateLimit; if (ctx.GetValue("LogRateLimit", rateLimit)) { ClientParams->LogRateLimitBytes = rateLimit; } ctx.GetValue("GrpcReconnectDelay", ClientParams->GrpcReconnectDelay); ctx.GetValue("GrpcMaxMessageSize", ClientParams->GrpcMaxMessageSize); const auto ownLogger = ctx.GetChildren("OwnLogger"); if (!ownLogger.empty() && ownLogger.front()->GetOrElse("LoggerType", TString()) != "global") { OwnLogger = ILogBackendCreator::Create(*ownLogger.front()); TLog log; log.ResetBackend(OwnLogger->CreateLogBackend()); ClientParams->SetLog(log); } return true; } void TLogBackendCreator::DoToJson(NJson::TJsonValue& value) const { value["Uri"] = ClientParams->Uri; if (ClientParams->SharedSecretKey) { value["SharedSecretKey"] = *ClientParams->SharedSecretKey; } value["MaxInflightBytes"] = ClientParams->MaxInflightBytes; value["GrpcSendDelay"] = ClientParams->GrpcSendDelay.ToString(); if (ClientParams->LogRateLimitBytes) { value["LogRateLimit"] = *ClientParams->LogRateLimitBytes; } value["GrpcReconnectDelay"] = ClientParams->GrpcReconnectDelay.ToString(); value["GrpcMaxMessageSize"] = ClientParams->GrpcMaxMessageSize; if (OwnLogger) { OwnLogger->ToJson(value["OwnLogger"].AppendValue(NJson::JSON_MAP)); } } THolder TLogBackendCreator::DoCreateLogBackend() const { return MakeLogBackend(*ClientParams); } }