From: Wiktor Kopec Date: Wed, 10 Mar 2021 22:05:09 +0000 (-0800) Subject: UseAppFilter for Logs pipeline (#2060) X-Git-Tag: submit/tizen/20210909.063632~17^2~82 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1c0b099fd4b4be8a44b3059e9a03d24ba08f0ce2;p=platform%2Fcore%2Fdotnet%2Fdiagnostics.git UseAppFilter for Logs pipeline (#2060) --- diff --git a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Configuration/LoggingSourceConfiguration.cs b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Configuration/LoggingSourceConfiguration.cs index b6bebf8f2..3b7ed790a 100644 --- a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Configuration/LoggingSourceConfiguration.cs +++ b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Configuration/LoggingSourceConfiguration.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Diagnostics.Tracing; using Microsoft.Diagnostics.NETCore.Client; @@ -11,17 +12,30 @@ namespace Microsoft.Diagnostics.Monitoring.EventPipe { public class LoggingSourceConfiguration : MonitoringSourceConfiguration { + private const string UseAppFilters = "UseAppFilters"; + private readonly LogLevel _level; + private readonly bool _useAppFilters; - public LoggingSourceConfiguration(LogLevel level = LogLevel.Debug) + /// + /// Creates a new logging source configuration. + /// + /// The logging level. Log messages at or above the log level will be included. + /// Use the UseAppFilters filterspec. This supersedes the log level and generates + /// log messages with the same levels per category as specified by the application configuration. + public LoggingSourceConfiguration(LogLevel level = LogLevel.Debug, bool useAppFilters = false) { _level = level; + _useAppFilters = useAppFilters; } public override IList GetProviders() { + string filterSpec = _useAppFilters ? UseAppFilters : FormattableString.Invariant($"*:{_level:G}"); + var providers = new List() { + // Logging new EventPipeProvider( MicrosoftExtensionsLoggingProviderName, @@ -29,8 +43,8 @@ namespace Microsoft.Diagnostics.Monitoring.EventPipe (long)(LoggingEventSource.Keywords.JsonMessage | LoggingEventSource.Keywords.FormattedMessage), arguments: new Dictionary { - // Filter all loggers to the specified level - { "FilterSpecs", $"*:{_level:G}" } + + { "FilterSpecs", filterSpec } } ) }; diff --git a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipeline.cs b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipeline.cs index 62ddc75f0..401cda000 100644 --- a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipeline.cs +++ b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipeline.cs @@ -24,7 +24,7 @@ namespace Microsoft.Diagnostics.Monitoring.EventPipe protected override MonitoringSourceConfiguration CreateConfiguration() { - return new LoggingSourceConfiguration(Settings.LogLevel); + return new LoggingSourceConfiguration(Settings.LogLevel, Settings.UseAppFilters); } protected override Task OnEventSourceAvailable(EventPipeEventSource eventSource, Func stopSessionAsync, CancellationToken token) diff --git a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipelineSettings.cs b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipelineSettings.cs index 58333f788..4e510038d 100644 --- a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipelineSettings.cs +++ b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/EventLogsPipelineSettings.cs @@ -12,5 +12,8 @@ namespace Microsoft.Diagnostics.Monitoring.EventPipe internal class EventLogsPipelineSettings : EventSourcePipelineSettings { public LogLevel LogLevel { get; set; } + + //This setting will set the levels to application default. + public bool UseAppFilters { get; set; } } }