diff --git a/Logging.sln b/Logging.sln
index fa2c1f86..67f7160e 100644
--- a/Logging.sln
+++ b/Logging.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.22530.0
+VisualStudioVersion = 14.0.22625.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Framework.Logging", "src\Microsoft.Framework.Logging\Microsoft.Framework.Logging.kproj", "{19D1B6C5-8A62-4387-8816-C54874D1DF5F}"
EndProject
@@ -23,6 +23,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Framework.Logging
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{699DB330-0095-4266-B7B0-3EAB3710CA49}"
EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Framework.Logging.TraceSource", "src\Microsoft.Framework.Logging.TraceSource\Microsoft.Framework.Logging.TraceSource.kproj", "{1A3EB66F-9E64-4676-852F-24995549ED8A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -105,6 +107,18 @@ Global
{00F5A9B3-6213-4526-8B2F-58D5B8427AA2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{00F5A9B3-6213-4526-8B2F-58D5B8427AA2}.Release|x86.ActiveCfg = Release|Any CPU
{00F5A9B3-6213-4526-8B2F-58D5B8427AA2}.Release|x86.Build.0 = Release|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Debug|x86.Build.0 = Debug|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Release|x86.ActiveCfg = Release|Any CPU
+ {1A3EB66F-9E64-4676-852F-24995549ED8A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -117,5 +131,6 @@ Global
{550E0247-0BDD-4016-A29B-250F075686FD} = {8C1F5D80-88EA-4961-84DC-7AC6E13951F4}
{75A4DE6D-BBAA-4D59-829D-94009E759A18} = {699DB330-0095-4266-B7B0-3EAB3710CA49}
{00F5A9B3-6213-4526-8B2F-58D5B8427AA2} = {699DB330-0095-4266-B7B0-3EAB3710CA49}
+ {1A3EB66F-9E64-4676-852F-24995549ED8A} = {699DB330-0095-4266-B7B0-3EAB3710CA49}
EndGlobalSection
EndGlobal
diff --git a/src/Microsoft.Framework.Logging.Console/project.json b/src/Microsoft.Framework.Logging.Console/project.json
index bad4db2b..c8d40249 100644
--- a/src/Microsoft.Framework.Logging.Console/project.json
+++ b/src/Microsoft.Framework.Logging.Console/project.json
@@ -2,7 +2,6 @@
"version": "1.0.0-*",
"description": "Console logger implementation.",
"dependencies": {
- "Microsoft.Framework.Logging": "1.0.0-*",
"Microsoft.Framework.Logging.Interfaces": "1.0.0-*"
},
"frameworks": {
@@ -12,7 +11,8 @@
"dependencies": {
"System.Runtime": "4.0.20.0-beta-*",
"System.Console": "4.0.0-beta-*",
- "System.IO": "4.0.10-beta-*"
+ "System.IO": "4.0.10-beta-*",
+ "System.Threading": "4.0.10-beta-*"
}
}
}
diff --git a/src/Microsoft.Framework.Logging.NLog/project.json b/src/Microsoft.Framework.Logging.NLog/project.json
index 507247fd..9137fccb 100644
--- a/src/Microsoft.Framework.Logging.NLog/project.json
+++ b/src/Microsoft.Framework.Logging.NLog/project.json
@@ -1,7 +1,7 @@
{
"version": "1.0.0-*",
"dependencies": {
- "Microsoft.Framework.Logging": "1.0.0-*",
+ "Microsoft.Framework.Logging.Interfaces": "1.0.0-*",
"NLog": "3.1.0"
},
"frameworks": {
diff --git a/src/Microsoft.Framework.Logging.Serilog/project.json b/src/Microsoft.Framework.Logging.Serilog/project.json
index 84af8f00..c86371a7 100644
--- a/src/Microsoft.Framework.Logging.Serilog/project.json
+++ b/src/Microsoft.Framework.Logging.Serilog/project.json
@@ -1,7 +1,7 @@
{
"version": "1.0.0-*",
"dependencies": {
- "Microsoft.Framework.Logging": "1.0.0-*",
+ "Microsoft.Framework.Logging.Interfaces": "1.0.0-*",
"Serilog": "1.4.14"
},
"frameworks": {
diff --git a/src/Microsoft.Framework.Logging/Internal/TraceSourceScope.cs b/src/Microsoft.Framework.Logging.TraceSource/Internal/TraceSourceScope.cs
similarity index 100%
rename from src/Microsoft.Framework.Logging/Internal/TraceSourceScope.cs
rename to src/Microsoft.Framework.Logging.TraceSource/Internal/TraceSourceScope.cs
diff --git a/src/Microsoft.Framework.Logging.TraceSource/Microsoft.Framework.Logging.TraceSource.kproj b/src/Microsoft.Framework.Logging.TraceSource/Microsoft.Framework.Logging.TraceSource.kproj
new file mode 100644
index 00000000..7ae336df
--- /dev/null
+++ b/src/Microsoft.Framework.Logging.TraceSource/Microsoft.Framework.Logging.TraceSource.kproj
@@ -0,0 +1,20 @@
+
+
+
+ 14.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+ 1a3eb66f-9e64-4676-852f-24995549ed8a
+ Microsoft.Framework.Logging.TraceSource
+ ..\..\artifacts\obj\$(MSBuildProjectName)
+ ..\..\artifacts\bin\$(MSBuildProjectName)\
+
+
+
+ 2.0
+
+
+
\ No newline at end of file
diff --git a/src/Microsoft.Framework.Logging.TraceSource/TraceSourceFactoryExtensions.cs b/src/Microsoft.Framework.Logging.TraceSource/TraceSourceFactoryExtensions.cs
new file mode 100644
index 00000000..6597cec4
--- /dev/null
+++ b/src/Microsoft.Framework.Logging.TraceSource/TraceSourceFactoryExtensions.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Diagnostics;
+using Microsoft.Framework.Internal;
+
+namespace Microsoft.Framework.Logging
+{
+ public static class TraceSourceFactoryExtensions
+ {
+ public static ILoggerFactory AddTraceSource(
+ [NotNull] this ILoggerFactory factory,
+ [NotNull] string switchName,
+ [NotNull] TraceListener listener)
+ {
+ return factory.AddTraceSource(new SourceSwitch(switchName), listener);
+ }
+
+ public static ILoggerFactory AddTraceSource(
+ [NotNull] this ILoggerFactory factory,
+ [NotNull] SourceSwitch sourceSwitch,
+ [NotNull] TraceListener listener)
+ {
+ factory.AddProvider(new TraceSourceLoggerProvider(sourceSwitch, listener));
+
+ return factory;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.Framework.Logging/TraceSourceLogger.cs b/src/Microsoft.Framework.Logging.TraceSource/TraceSourceLogger.cs
similarity index 97%
rename from src/Microsoft.Framework.Logging/TraceSourceLogger.cs
rename to src/Microsoft.Framework.Logging.TraceSource/TraceSourceLogger.cs
index ed6b2884..0531820e 100644
--- a/src/Microsoft.Framework.Logging/TraceSourceLogger.cs
+++ b/src/Microsoft.Framework.Logging.TraceSource/TraceSourceLogger.cs
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#if NET45 || ASPNET50 || ASPNETCORE50
using System;
using System.Diagnostics;
using Microsoft.Framework.Logging.Internal;
@@ -69,5 +68,4 @@ public IDisposable BeginScope(object state)
return new TraceSourceScope(state);
}
}
-}
-#endif
+}
\ No newline at end of file
diff --git a/src/Microsoft.Framework.Logging/TraceSourceLoggerProvider.cs b/src/Microsoft.Framework.Logging.TraceSource/TraceSourceLoggerProvider.cs
similarity index 74%
rename from src/Microsoft.Framework.Logging/TraceSourceLoggerProvider.cs
rename to src/Microsoft.Framework.Logging.TraceSource/TraceSourceLoggerProvider.cs
index 33b17f87..a4d7e507 100644
--- a/src/Microsoft.Framework.Logging/TraceSourceLoggerProvider.cs
+++ b/src/Microsoft.Framework.Logging.TraceSource/TraceSourceLoggerProvider.cs
@@ -1,10 +1,10 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#if NET45 || ASPNET50 || ASPNETCORE50
using System;
using System.Collections.Concurrent;
using System.Diagnostics;
+using Microsoft.Framework.Internal;
namespace Microsoft.Framework.Logging
{
@@ -13,37 +13,24 @@ namespace Microsoft.Framework.Logging
///
public class TraceSourceLoggerProvider : ILoggerProvider
{
- private const string RootTraceName = "Microsoft.AspNet";
private readonly SourceSwitch _rootSourceSwitch;
private readonly TraceListener _rootTraceListener;
private readonly ConcurrentDictionary _sources = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase);
///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Creates a factory named "Microsoft.AspNet".
- ///
- public TraceSourceLoggerProvider()
- {
- _rootSourceSwitch = new SourceSwitch(RootTraceName);
- _rootTraceListener = null;
- }
-
- ///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
///
///
- public TraceSourceLoggerProvider(SourceSwitch rootSourceSwitch, TraceListener rootTraceListener)
+ public TraceSourceLoggerProvider([NotNull]SourceSwitch rootSourceSwitch, [NotNull]TraceListener rootTraceListener)
{
- _rootSourceSwitch = rootSourceSwitch ?? new SourceSwitch(RootTraceName);
+ _rootSourceSwitch = rootSourceSwitch;
_rootTraceListener = rootTraceListener;
}
///
- /// Creates a new DiagnosticsLogger for the given component name.
+ /// Creates a new for the given component name.
///
///
///
@@ -60,12 +47,15 @@ private TraceSource GetOrAddTraceSource(string name)
private TraceSource InitializeTraceSource(string traceSourceName)
{
var traceSource = new TraceSource(traceSourceName);
- if (traceSourceName == RootTraceName)
+ string parentSourceName = ParentSourceName(traceSourceName);
+
+ if (string.IsNullOrEmpty(parentSourceName))
{
if (HasDefaultSwitch(traceSource))
{
traceSource.Switch = _rootSourceSwitch;
}
+
if (_rootTraceListener != null)
{
traceSource.Listeners.Add(_rootTraceListener);
@@ -73,13 +63,13 @@ private TraceSource InitializeTraceSource(string traceSourceName)
}
else
{
- string parentSourceName = ParentSourceName(traceSourceName);
if (HasDefaultListeners(traceSource))
{
TraceSource parentTraceSource = GetOrAddTraceSource(parentSourceName);
traceSource.Listeners.Clear();
traceSource.Listeners.AddRange(parentTraceSource.Listeners);
}
+
if (HasDefaultSwitch(traceSource))
{
TraceSource parentTraceSource = GetOrAddTraceSource(parentSourceName);
@@ -93,7 +83,7 @@ private TraceSource InitializeTraceSource(string traceSourceName)
private static string ParentSourceName(string traceSourceName)
{
int indexOfLastDot = traceSourceName.LastIndexOf('.');
- return indexOfLastDot == -1 ? RootTraceName : traceSourceName.Substring(0, indexOfLastDot);
+ return indexOfLastDot == -1 ? null : traceSourceName.Substring(0, indexOfLastDot);
}
private static bool HasDefaultListeners(TraceSource traceSource)
@@ -108,4 +98,3 @@ private static bool HasDefaultSwitch(TraceSource traceSource)
}
}
}
-#endif
diff --git a/src/Microsoft.Framework.Logging.TraceSource/project.json b/src/Microsoft.Framework.Logging.TraceSource/project.json
new file mode 100644
index 00000000..427d3597
--- /dev/null
+++ b/src/Microsoft.Framework.Logging.TraceSource/project.json
@@ -0,0 +1,30 @@
+{
+ "version": "1.0.0-*",
+ "dependencies": {
+ "Microsoft.Framework.Logging.Interfaces": "1.0.0-*",
+ "Microsoft.Framework.NotNullAttribute.Internal": { "type": "build", "version": "1.0.0-*" }
+ },
+
+ "frameworks": {
+ "net45": {
+ "frameworkAssemblies": {
+ "System.Collections.Concurrent": ""
+ }
+ },
+ "aspnet50": {
+ "frameworkAssemblies": {
+ "System.Collections.Concurrent": ""
+ }
+ },
+ "aspnetcore50": {
+ "dependencies": {
+ "System.Collections.Concurrent": "4.0.10-beta-*",
+ "System.Collections": "4.0.10-beta-*",
+ "System.Diagnostics.TraceSource": "4.0.0-beta-*",
+ "System.Globalization": "4.0.10-beta-*",
+ "System.Linq": "4.0.0-beta-*",
+ "System.Threading": "4.0.10-beta-*"
+ }
+ }
+ }
+}
diff --git a/src/Microsoft.Framework.Logging/LoggingServiceCollectionExtensions.cs b/src/Microsoft.Framework.Logging/LoggingServiceCollectionExtensions.cs
new file mode 100644
index 00000000..6a69286c
--- /dev/null
+++ b/src/Microsoft.Framework.Logging/LoggingServiceCollectionExtensions.cs
@@ -0,0 +1,14 @@
+using Microsoft.Framework.Logging;
+
+namespace Microsoft.Framework.DependencyInjection
+{
+ public static class LoggingServiceCollectionExtensions
+ {
+ public static IServiceCollection AddLogging(this IServiceCollection services)
+ {
+ services.TryAdd(ServiceDescriptor.Singleton());
+ services.TryAdd(ServiceDescriptor.Singleton(typeof(ILogger<>), typeof(Logger<>)));
+ return services;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.Framework.Logging/project.json b/src/Microsoft.Framework.Logging/project.json
index 139cae43..fc63ac45 100644
--- a/src/Microsoft.Framework.Logging/project.json
+++ b/src/Microsoft.Framework.Logging/project.json
@@ -2,6 +2,7 @@
"version": "1.0.0-*",
"description": "Logging infrastructure.",
"dependencies": {
+ "Microsoft.Framework.DependencyInjection.Interfaces": "1.0.0-*",
"Microsoft.Framework.Logging.Interfaces": "1.0.0-*"
},
"compilationOptions": {
diff --git a/test/Microsoft.Framework.Logging.Test/TraceSourceLoggerTest.cs b/test/Microsoft.Framework.Logging.Test/TraceSourceLoggerTest.cs
index 934e2d73..245d45b1 100644
--- a/test/Microsoft.Framework.Logging.Test/TraceSourceLoggerTest.cs
+++ b/test/Microsoft.Framework.Logging.Test/TraceSourceLoggerTest.cs
@@ -3,6 +3,7 @@
using System;
using System.Diagnostics;
+using System.IO;
using Xunit;
namespace Microsoft.Framework.Logging.Test
@@ -20,7 +21,7 @@ public static void IsEnabledReturnsCorrectValue()
var logger = factory.CreateLogger("Test");
// Act
- factory.AddProvider(new TraceSourceLoggerProvider(testSwitch, new ConsoleTraceListener()));
+ factory.AddTraceSource(testSwitch, new ConsoleTraceListener());
// Assert
Assert.True(logger.IsEnabled(LogLevel.Critical));
@@ -48,8 +49,8 @@ public static void MultipleLoggers_IsEnabledReturnsCorrectValue(SourceLevels fir
var logger = factory.CreateLogger("Test");
// Act
- factory.AddProvider(new TraceSourceLoggerProvider(firstSwitch, new ConsoleTraceListener()));
- factory.AddProvider(new TraceSourceLoggerProvider(secondSwitch, new ConsoleTraceListener()));
+ factory.AddTraceSource(firstSwitch, new ConsoleTraceListener());
+ factory.AddTraceSource(secondSwitch, new ConsoleTraceListener());
// Assert
Assert.Equal(expected, logger.IsEnabled(LogLevel.Information));
diff --git a/src/Microsoft.Framework.Logging/Utils/WriteContext.cs b/test/Microsoft.Framework.Logging.Test/Utils/WriteContext.cs
similarity index 100%
rename from src/Microsoft.Framework.Logging/Utils/WriteContext.cs
rename to test/Microsoft.Framework.Logging.Test/Utils/WriteContext.cs
diff --git a/test/Microsoft.Framework.Logging.Test/project.json b/test/Microsoft.Framework.Logging.Test/project.json
index 3a97fd0a..488812d5 100644
--- a/test/Microsoft.Framework.Logging.Test/project.json
+++ b/test/Microsoft.Framework.Logging.Test/project.json
@@ -1,6 +1,8 @@
{
"dependencies": {
+ "Microsoft.Framework.Logging": "1.0.0-*",
"Microsoft.Framework.Logging.Console": "1.0.0-*",
+ "Microsoft.Framework.Logging.TraceSource": "1.0.0-*",
"Microsoft.Framework.Logging.Serilog": "1.0.0-*",
"xunit.runner.kre": "1.0.0-*"
},