diff --git a/src/Microsoft.Extensions.Logging.EventSource/EventSourceLogger.cs b/src/Microsoft.Extensions.Logging.EventSource/EventSourceLogger.cs index c656d7fc..30e8fe3b 100644 --- a/src/Microsoft.Extensions.Logging.EventSource/EventSourceLogger.cs +++ b/src/Microsoft.Extensions.Logging.EventSource/EventSourceLogger.cs @@ -8,7 +8,7 @@ using System.Threading; using Newtonsoft.Json; -namespace Microsoft.Extensions.Logging.EventSourceLogger +namespace Microsoft.Extensions.Logging.EventSource { /// /// A logger that writes messages to EventSource instance. @@ -19,9 +19,9 @@ namespace Microsoft.Extensions.Logging.EventSourceLogger /// internal class EventSourceLogger : ILogger { + private static int _activityIds; private readonly LoggingEventSource _eventSource; private readonly int _factoryID; - private static int s_activityIds; public EventSourceLogger(string categoryName, int factoryID, LoggingEventSource eventSource, EventSourceLogger next) { @@ -131,7 +131,7 @@ public IDisposable BeginScope(TState state) return NoopDisposable.Instance; } - var id = Interlocked.Increment(ref s_activityIds); + var id = Interlocked.Increment(ref _activityIds); // If JsonMessage is on, use JSON format if (_eventSource.IsEnabled(EventLevel.Critical, LoggingEventSource.Keywords.JsonMessage)) @@ -188,7 +188,7 @@ public void Dispose() private class NoopDisposable : IDisposable { - public static NoopDisposable Instance = new NoopDisposable(); + public static readonly NoopDisposable Instance = new NoopDisposable(); public void Dispose() { diff --git a/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerFactoryExtensions.cs b/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerFactoryExtensions.cs index 3c5a16a4..fa05171c 100644 --- a/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerFactoryExtensions.cs +++ b/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerFactoryExtensions.cs @@ -2,7 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using Microsoft.Extensions.Logging.EventSourceLogger; +using Microsoft.Extensions.Logging.EventSource; namespace Microsoft.Extensions.Logging { diff --git a/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerProvider.cs b/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerProvider.cs index e795b535..48b629aa 100644 --- a/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerProvider.cs +++ b/src/Microsoft.Extensions.Logging.EventSource/EventSourceLoggerProvider.cs @@ -4,7 +4,7 @@ using System; using System.Diagnostics.Tracing; -namespace Microsoft.Extensions.Logging.EventSourceLogger +namespace Microsoft.Extensions.Logging.EventSource { /// /// The provider for the . @@ -32,9 +32,7 @@ public EventSourceLoggerProvider(LoggingEventSource eventSource, EventSourceLogg public EventSourceLoggerProvider Next { get; } - /// /// - /// public ILogger CreateLogger(string categoryName) { // need to check if the filter spec and internal event source level has changed @@ -51,7 +49,7 @@ public void Dispose() } // Sets the filtering for a particular logger provider - public void SetFilterSpec(string filterSpec) + internal void SetFilterSpec(string filterSpec) { _filterSpec = filterSpec; _defaultLevel = GetDefaultLevel(); diff --git a/src/Microsoft.Extensions.Logging.EventSource/ExceptionInfo.cs b/src/Microsoft.Extensions.Logging.EventSource/ExceptionInfo.cs index ca79628b..c58c0456 100644 --- a/src/Microsoft.Extensions.Logging.EventSource/ExceptionInfo.cs +++ b/src/Microsoft.Extensions.Logging.EventSource/ExceptionInfo.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace Microsoft.Extensions.Logging.EventSourceLogger +namespace Microsoft.Extensions.Logging.EventSource { /// /// Represents information about exceptions that is captured by EventSourceLogger @@ -14,6 +14,6 @@ internal class ExceptionInfo public string TypeName { get; set; } public string Message { get; set; } public int HResult { get; set; } - public string VerboseMessage { get; set; } // This is the ToString() of the Exception + public string VerboseMessage { get; set; } // This is the ToString() of the Exception } } diff --git a/src/Microsoft.Extensions.Logging.EventSource/LoggingEventSource.cs b/src/Microsoft.Extensions.Logging.EventSource/LoggingEventSource.cs index ed2f1832..7ec0b314 100644 --- a/src/Microsoft.Extensions.Logging.EventSource/LoggingEventSource.cs +++ b/src/Microsoft.Extensions.Logging.EventSource/LoggingEventSource.cs @@ -1,10 +1,9 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - using System.Collections.Generic; using System.Diagnostics.Tracing; -namespace Microsoft.Extensions.Logging.EventSourceLogger +namespace Microsoft.Extensions.Logging.EventSource { /// /// The LoggingEventSource is the bridge form all ILogger based logging to EventSource/EventListener logging. @@ -70,7 +69,7 @@ namespace Microsoft.Extensions.Logging.EventSourceLogger /// } /// [EventSource(Name = "Microsoft-Extensions-Logging")] - public class LoggingEventSource : EventSource + internal class LoggingEventSource : System.Diagnostics.Tracing.EventSource { /// /// This is public from an EventSource consumer point of view, but since these defintions @@ -103,14 +102,14 @@ public class Keywords internal static readonly LogLevel LoggingDisabled = LogLevel.None + 1; + private readonly object _providerLock = new object(); private string _filterSpec; private EventSourceLoggerProvider _loggingProviders; - private object _lockObj = new object(); private bool _checkLevel; internal EventSourceLoggerProvider CreateLoggerProvider() { - lock (_lockObj) + lock (_providerLock) { var newLoggerProvider = new EventSourceLoggerProvider(this, _loggingProviders); _loggingProviders = newLoggerProvider; @@ -197,24 +196,24 @@ internal void ActivityJsonStop(int ID, int FactoryID, string LoggerName) WriteEvent(7, ID, FactoryID, LoggerName); } - /// /// - /// protected override void OnEventCommand(EventCommandEventArgs command) { - lock (_lockObj) + lock (_providerLock) { - if ((command.Command == EventCommand.Update || command.Command == EventCommand.Enable)) + if (command.Command == EventCommand.Update || command.Command == EventCommand.Enable) { string filterSpec; if (!command.Arguments.TryGetValue("FilterSpecs", out filterSpec)) - filterSpec = ""; // This means turn on everything. + { + filterSpec = string.Empty; // This means turn on everything. + } SetFilterSpec(filterSpec); } else if (command.Command == EventCommand.Update || command.Command == EventCommand.Disable) { - SetFilterSpec(null); // This means disable everything. + SetFilterSpec(null); // This means disable everything. } } } @@ -238,7 +237,7 @@ private void SetFilterSpec(string filterSpec) [NonEvent] internal void ApplyFilterSpec() { - lock (_lockObj) + lock (_providerLock) { if (_checkLevel) { diff --git a/src/Microsoft.Extensions.Logging.EventSource/Properties/AssemblyInfo.cs b/src/Microsoft.Extensions.Logging.EventSource/Properties/AssemblyInfo.cs index 8d8d8819..d0cd4fd6 100644 --- a/src/Microsoft.Extensions.Logging.EventSource/Properties/AssemblyInfo.cs +++ b/src/Microsoft.Extensions.Logging.EventSource/Properties/AssemblyInfo.cs @@ -3,6 +3,9 @@ using System.Reflection; using System.Resources; +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.EventSource.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] [assembly: AssemblyMetadata("Serviceable", "True")] [assembly: NeutralResourcesLanguage("en-us")] diff --git a/test/Microsoft.Extensions.Logging.EventSource.Test/EventSourceLoggerTest.cs b/test/Microsoft.Extensions.Logging.EventSource.Test/EventSourceLoggerTest.cs index 492ec832..995262fa 100644 --- a/test/Microsoft.Extensions.Logging.EventSource.Test/EventSourceLoggerTest.cs +++ b/test/Microsoft.Extensions.Logging.EventSource.Test/EventSourceLoggerTest.cs @@ -6,7 +6,7 @@ using System.Diagnostics.Tracing; using System.IO; using System.Linq; -using Microsoft.Extensions.Logging.EventSourceLogger; +using Microsoft.Extensions.Logging.EventSource; using Newtonsoft.Json; using Xunit; @@ -421,7 +421,7 @@ public class ListenerSettings public string FilterSpec; } - private EventSource _loggingEventSource; + private System.Diagnostics.Tracing.EventSource _loggingEventSource; public TestEventListener() { @@ -449,7 +449,7 @@ public void EnableEvents(ListenerSettings settings) EnableEvents(_loggingEventSource, settings.Level, settings.Keywords, args); } - protected override void OnEventSourceCreated(EventSource eventSource) + protected override void OnEventSourceCreated(System.Diagnostics.Tracing.EventSource eventSource) { if (eventSource.Name == "Microsoft-Extensions-Logging") { diff --git a/test/Microsoft.Extensions.Logging.EventSource.Test/project.json b/test/Microsoft.Extensions.Logging.EventSource.Test/project.json index f9bd2821..59ba06ac 100644 --- a/test/Microsoft.Extensions.Logging.EventSource.Test/project.json +++ b/test/Microsoft.Extensions.Logging.EventSource.Test/project.json @@ -1,5 +1,6 @@ { "buildOptions": { + "keyFile": "../../tools/Key.snk", "warningsAsErrors": true }, "dependencies": {