diff options
Diffstat (limited to 'src/zenserver/diag/logging.cpp')
| -rw-r--r-- | src/zenserver/diag/logging.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/zenserver/diag/logging.cpp b/src/zenserver/diag/logging.cpp index 178c3d3b5..38b15480a 100644 --- a/src/zenserver/diag/logging.cpp +++ b/src/zenserver/diag/logging.cpp @@ -13,6 +13,7 @@ #include <zencore/string.h> #include <zenutil/logging.h> #include <zenutil/logging/rotatingfilesink.h> +#include <zenutil/splitconsole/tcplogstreamsink.h> #include "otlphttp.h" @@ -28,6 +29,7 @@ InitializeServerLogging(const ZenServerConfig& InOptions, bool WithCacheService) .IsTest = InOptions.IsTest, .NoConsoleOutput = InOptions.LoggingConfig.NoConsoleOutput, .QuietConsole = InOptions.LoggingConfig.QuietConsole, + .ForceColor = InOptions.LoggingConfig.ForceColor, .AbsLogFile = InOptions.LoggingConfig.AbsLogFile, .LogId = InOptions.LoggingConfig.LogId}; @@ -81,6 +83,27 @@ InitializeServerLogging(const ZenServerConfig& InOptions, bool WithCacheService) } #endif + if (!InOptions.LoggingConfig.LogStreamEndpoint.empty()) + { + std::string Endpoint = InOptions.LoggingConfig.LogStreamEndpoint; + std::string Host = "localhost"; + uint16_t Port = 0; + + auto ColonPos = Endpoint.rfind(':'); + if (ColonPos != std::string::npos) + { + Host = Endpoint.substr(0, ColonPos); + std::optional<uint16_t> P = ParseInt<uint16_t>(std::string_view(Endpoint).substr(ColonPos + 1)); + Port = P.value_or(0); + } + + if (Port > 0) + { + logging::SinkPtr StreamSink(new TcpLogStreamSink(Host, Port, "zenserver")); + zen::logging::Default()->AddSink(std::move(StreamSink)); + } + } + FinishInitializeLogging(LogOptions); const zen::Oid ServerSessionId = zen::GetSessionId(); |