From d889b5bbfbfcb431f590a80b877f97d342ed63ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Thu, 21 Dec 2023 18:03:53 -0300 Subject: [PATCH 1/8] Update ConsoleLoggerOptions.cs Add DisableMessageQueue option --- .../src/ConsoleLoggerOptions.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs index 69704e4095a8eb..10f0f92b070c73 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs @@ -100,5 +100,19 @@ public int MaxQueueLength _maxQueuedMessages = value; } } + + private bool _disableMessageQueue = false; + + /// + /// Enable or disable the message queue behavior. Default false. + /// + public bool DisableMessageQueue + { + get => _disableMessageQueue; + set + { + _disableMessageQueue = value; + } + } } } From 922e1d5706d979fe39a024354b2e4486cd8e2301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Thu, 21 Dec 2023 18:10:24 -0300 Subject: [PATCH 2/8] Update ConsoleLoggerProcessor.cs Behavior to direct write message log without queue --- .../src/ConsoleLoggerProcessor.cs | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs index 8426f51c17d601..801172c0d5ccbf 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs @@ -16,6 +16,7 @@ internal class ConsoleLoggerProcessor : IDisposable { private readonly Queue _messageQueue; private volatile int _messagesDropped; + private bool _disableMessageQueue; private bool _isAddingCompleted; private int _maxQueuedMessages = ConsoleLoggerOptions.DefaultMaxQueueLengthValue; public int MaxQueueLength @@ -60,8 +61,9 @@ public ConsoleLoggerQueueFullMode FullMode public IConsole Console { get; } public IConsole ErrorConsole { get; } - public ConsoleLoggerProcessor(IConsole console, IConsole errorConsole, ConsoleLoggerQueueFullMode fullMode, int maxQueueLength) + public ConsoleLoggerProcessor(IConsole console, IConsole errorConsole, ConsoleLoggerQueueFullMode fullMode, int maxQueueLength, bool disableMessageQueue) { + _disableMessageQueue = disableMessageQueue; _messageQueue = new Queue(); FullMode = fullMode; MaxQueueLength = maxQueueLength; @@ -78,6 +80,12 @@ public ConsoleLoggerProcessor(IConsole console, IConsole errorConsole, ConsoleLo public virtual void EnqueueMessage(LogMessageEntry message) { + if (_disableMessageQueue) + { + DirectWriteMessage(message); + return; + } + // cannot enqueue when adding is completed if (!Enqueue(message)) { @@ -85,6 +93,19 @@ public virtual void EnqueueMessage(LogMessageEntry message) } } + internal void DirectWriteMessage(BmgLogMessageEntry entry) + { + _ = Task.Factory.StartNew(() => + { + try + { + IConsole console = entry.LogAsError ? ErrorConsole : Console; + console.Write(entry.Message); + } + catch (Exception) { } //Ignore to protect application + }); + } + // internal for testing internal void WriteMessage(LogMessageEntry entry) { From f45f6dc3d7fab626bbbff0061ba7633c0d4b9524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Thu, 21 Dec 2023 18:11:47 -0300 Subject: [PATCH 3/8] Update ConsoleLoggerProvider.cs Add DisableMessageQueue to processor constructor --- .../src/ConsoleLoggerProvider.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProvider.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProvider.cs index 8551e74056f4c9..02d5f65313d21e 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProvider.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProvider.cs @@ -59,7 +59,8 @@ public ConsoleLoggerProvider(IOptionsMonitor options, IEnu console, errorConsole, options.CurrentValue.QueueFullMode, - options.CurrentValue.MaxQueueLength); + options.CurrentValue.MaxQueueLength, + options.CurrentValue.DisableMessageQueue); ReloadLoggerOptions(options.CurrentValue); _optionsReloadToken = _options.OnChange(ReloadLoggerOptions); From 363ff7a5562a0d4d7128b2de6cb897bfa221ec94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Thu, 21 Dec 2023 19:41:29 -0300 Subject: [PATCH 4/8] Update ConsoleLoggerProcessor.cs Bug fix --- .../src/ConsoleLoggerProcessor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs index 801172c0d5ccbf..60b1b648077cb6 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs @@ -93,7 +93,7 @@ public virtual void EnqueueMessage(LogMessageEntry message) } } - internal void DirectWriteMessage(BmgLogMessageEntry entry) + internal void DirectWriteMessage(LogMessageEntry entry) { _ = Task.Factory.StartNew(() => { From 5a1e7662e834ae473ca7006122a332ff90fffdb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Thu, 21 Dec 2023 20:43:46 -0300 Subject: [PATCH 5/8] Update ConsoleLoggerProcessor.cs Add using tasks --- .../src/ConsoleLoggerProcessor.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs index 60b1b648077cb6..f6daf5173e2300 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs @@ -8,6 +8,7 @@ using System.Diagnostics.Metrics; using System.Runtime.Versioning; using System.Threading; +using System.Threading.Tasks; namespace Microsoft.Extensions.Logging.Console { From 902ce0fe127fa0f701920264a477ed37a55940df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Fri, 22 Dec 2023 11:45:46 -0300 Subject: [PATCH 6/8] Update ConsoleLoggerProcessor.cs Smells adjust --- .../src/ConsoleLoggerProcessor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs index f6daf5173e2300..b10af6d6208333 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs @@ -86,7 +86,7 @@ public virtual void EnqueueMessage(LogMessageEntry message) DirectWriteMessage(message); return; } - + // cannot enqueue when adding is completed if (!Enqueue(message)) { @@ -104,7 +104,7 @@ internal void DirectWriteMessage(LogMessageEntry entry) console.Write(entry.Message); } catch (Exception) { } //Ignore to protect application - }); + }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default); } // internal for testing From 3f44fc212852032afd700116d179b509db341e5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Fri, 22 Dec 2023 11:47:01 -0300 Subject: [PATCH 7/8] Update ConsoleLoggerOptions.cs Smell adjust --- .../src/ConsoleLoggerOptions.cs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs index 10f0f92b070c73..16254949aac643 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerOptions.cs @@ -101,18 +101,9 @@ public int MaxQueueLength } } - private bool _disableMessageQueue = false; - /// /// Enable or disable the message queue behavior. Default false. /// - public bool DisableMessageQueue - { - get => _disableMessageQueue; - set - { - _disableMessageQueue = value; - } - } + public bool DisableMessageQueue { get; set; } } } From 1e5d65e60f20cea566a0e6fc85a3be375ec3cbc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Sodr=C3=A9?= Date: Fri, 22 Dec 2023 12:13:24 -0300 Subject: [PATCH 8/8] Update ConsoleLoggerProcessor.cs Optional argument --- .../src/ConsoleLoggerProcessor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs index b10af6d6208333..7afc816755d977 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerProcessor.cs @@ -62,7 +62,7 @@ public ConsoleLoggerQueueFullMode FullMode public IConsole Console { get; } public IConsole ErrorConsole { get; } - public ConsoleLoggerProcessor(IConsole console, IConsole errorConsole, ConsoleLoggerQueueFullMode fullMode, int maxQueueLength, bool disableMessageQueue) + public ConsoleLoggerProcessor(IConsole console, IConsole errorConsole, ConsoleLoggerQueueFullMode fullMode, int maxQueueLength, bool disableMessageQueue = false) { _disableMessageQueue = disableMessageQueue; _messageQueue = new Queue();