This is an automated email from the ASF dual-hosted git repository. aaronai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
commit a376ca5ac4d353381084dad353e3e3f828baddc6 Author: Aaron Ai <[email protected]> AuthorDate: Thu Mar 2 17:43:43 2023 +0800 Allow to adjust log configuration --- csharp/rocketmq-client-csharp/Client.cs | 42 ++++++++++++++++----------- csharp/rocketmq-client-csharp/MqLogManager.cs | 31 +++++++++++++++++--- 2 files changed, 52 insertions(+), 21 deletions(-) diff --git a/csharp/rocketmq-client-csharp/Client.cs b/csharp/rocketmq-client-csharp/Client.cs index a9bdb705..e78a8651 100644 --- a/csharp/rocketmq-client-csharp/Client.cs +++ b/csharp/rocketmq-client-csharp/Client.cs @@ -313,28 +313,36 @@ namespace Org.Apache.Rocketmq private async Task<TopicRouteData> FetchTopicRoute0(string topic) { - var request = new Proto::QueryRouteRequest + try { - Topic = new Proto::Resource + var request = new Proto::QueryRouteRequest { - Name = topic - }, - Endpoints = Endpoints.ToProtobuf() - }; + Topic = new Proto::Resource + { + Name = topic + }, + Endpoints = Endpoints.ToProtobuf() + }; + + var invocation = + await ClientManager.QueryRoute(Endpoints, request, ClientConfig.RequestTimeout); + var code = invocation.Response.Status.Code; + if (!Proto.Code.Ok.Equals(code)) + { + Logger.Error($"Failed to fetch topic route, clientId={ClientId}, topic={topic}, code={code}, " + + $"statusMessage={invocation.Response.Status.Message}"); + } - var invocation = - await ClientManager.QueryRoute(Endpoints, request, ClientConfig.RequestTimeout); - var code = invocation.Response.Status.Code; - if (!Proto.Code.Ok.Equals(code)) + StatusChecker.Check(invocation.Response.Status, request, invocation.RequestId); + + var messageQueues = invocation.Response.MessageQueues.ToList(); + return new TopicRouteData(messageQueues); + } + catch (Exception e) { - Logger.Error($"Failed to fetch topic route, clientId={ClientId}, topic={topic}, code={code}, " + - $"statusMessage={invocation.Response.Status.Message}"); + Logger.Error(e, $"Failed to fetch topic route, clientId={ClientId}, topic={topic}"); + throw; } - - StatusChecker.Check(invocation.Response.Status, request, invocation.RequestId); - - var messageQueues = invocation.Response.MessageQueues.ToList(); - return new TopicRouteData(messageQueues); } private async void Heartbeat() diff --git a/csharp/rocketmq-client-csharp/MqLogManager.cs b/csharp/rocketmq-client-csharp/MqLogManager.cs index 41ebf5c1..1e67bb56 100644 --- a/csharp/rocketmq-client-csharp/MqLogManager.cs +++ b/csharp/rocketmq-client-csharp/MqLogManager.cs @@ -35,13 +35,36 @@ namespace Org.Apache.Rocketmq private static readonly Lazy<LogFactory> LazyInstance = new(BuildLogFactory); + private const string FileLogLevelKey = "rocketmq.log.level"; + private const string FileLogLevel = "Info"; + + private const string ConsoleAppenderEnabledKey = "mq.consoleAppender.enabled"; + private const string ConsoleAppenderEnabled = "false"; + private const string ConsoleAppenderLogLevel = "Off"; + + + private const string FileLogRootKey = "rocketmq.log.root"; + + private const string FileMaxIndexKey = "rocketmq.log.file.maxIndex"; + private const string FileMaxIndex = "10"; + private static LogFactory BuildLogFactory() { + var fileLogLevel = Environment.GetEnvironmentVariable(FileLogLevelKey) ?? FileLogLevel; + var consoleAppenderEnabled = + Environment.GetEnvironmentVariable(ConsoleAppenderEnabledKey) ?? ConsoleAppenderEnabled; + var consoleLogLevel = bool.Parse(consoleAppenderEnabled) ? fileLogLevel : ConsoleAppenderLogLevel; + var fileLogRoot = Environment.GetEnvironmentVariable(FileLogRootKey) ?? + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + var fileMaxIndexStr = Environment.GetEnvironmentVariable(FileMaxIndexKey) ?? FileMaxIndex; + var fileMaxIndex = int.Parse(fileMaxIndexStr); + + var config = new LoggingConfiguration(); var fileTarget = new FileTarget(); fileTarget.Name = "log_file"; fileTarget.FileName = - new SimpleLayout("${specialfolder:folder=UserProfile}/logs/rocketmq/rocketmq-client.log"); + new SimpleLayout($"{fileLogRoot}/logs/rocketmq/rocketmq-client.log"); fileTarget.Layout = new SimpleLayout( "${longdate} ${level:uppercase=true:padding=-5} [${processid}] [${threadid}] [${callsite}:${callsite-linenumber}] ${message} ${onexception:${exception:format=ToString,Data}}"); @@ -49,7 +72,7 @@ namespace Org.Apache.Rocketmq new SimpleLayout("${specialfolder:folder=UserProfile}/logs/rocketmq/rocketmq-client.{######}.log"); fileTarget.ArchiveAboveSize = 67108864; fileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence; - fileTarget.MaxArchiveFiles = 10; + fileTarget.MaxArchiveFiles = fileMaxIndex; fileTarget.ConcurrentWrites = true; fileTarget.KeepFileOpen = false; @@ -66,10 +89,10 @@ namespace Org.Apache.Rocketmq config.AddTarget(consoleTarget); - var asyncFileRule = new LoggingRule("*", LogLevel.FromString("Debug"), asyncTargetWrapper); + var asyncFileRule = new LoggingRule("*", LogLevel.FromString(fileLogLevel), asyncTargetWrapper); config.LoggingRules.Add(asyncFileRule); - var consoleRule = new LoggingRule("*", LogLevel.FromString("Debug"), consoleTarget); + var consoleRule = new LoggingRule("*", LogLevel.FromString(consoleLogLevel), consoleTarget); config.LoggingRules.Add(consoleRule); var logFactory = new LogFactory();
