Skip to content

Commit 027670b

Browse files
author
Jason Dryhurst-Smith
committed
add the logging provider abstractions for other providers to use
1 parent e0e9757 commit 027670b

File tree

6 files changed

+221
-0
lines changed

6 files changed

+221
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.28307.572
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CorrelatorSharp.Logging.LoggerProvider", "CorrelatorSharp.Logging.LoggerProvider\CorrelatorSharp.Logging.LoggerProvider.csproj", "{38F494AA-E8F2-4D86-941F-EED20BC55A5C}"
7+
EndProject
8+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D6E29187-8604-4D73-8BE7-5F2B1765F009}"
9+
ProjectSection(SolutionItems) = preProject
10+
appveyor.yml = appveyor.yml
11+
EndProjectSection
12+
EndProject
13+
Global
14+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
15+
Debug|Any CPU = Debug|Any CPU
16+
Release|Any CPU = Release|Any CPU
17+
EndGlobalSection
18+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
19+
{38F494AA-E8F2-4D86-941F-EED20BC55A5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
20+
{38F494AA-E8F2-4D86-941F-EED20BC55A5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
21+
{38F494AA-E8F2-4D86-941F-EED20BC55A5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
22+
{38F494AA-E8F2-4D86-941F-EED20BC55A5C}.Release|Any CPU.Build.0 = Release|Any CPU
23+
EndGlobalSection
24+
GlobalSection(SolutionProperties) = preSolution
25+
HideSolutionNode = FALSE
26+
EndGlobalSection
27+
GlobalSection(ExtensibilityGlobals) = postSolution
28+
SolutionGuid = {C46E5507-8447-402B-AC17-D9A5BF3DB45F}
29+
EndGlobalSection
30+
EndGlobal
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<PackageId>CorrelatorSharp.Logging.LoggerProvider</PackageId>
4+
5+
<Version>1.0.0</Version>
6+
7+
<!--Bump the assembly version only on major releases-->
8+
<AssemblyVersion>1.0.0.0</AssemblyVersion>
9+
10+
<AssemblyName>CorrelatorSharp.Logging.LoggerProvider</AssemblyName>
11+
<Description>CorrelatorSharp, a set of tools for adding correlation identifiers for actions performed by users and machine across your applications. Your one stop shop for context-aware logging and diagnostics.</Description>
12+
<Authors>Ivan Zlatev, Jason Dryhurst-Smith</Authors>
13+
<TargetFrameworks>net47;netstandard2.0</TargetFrameworks>
14+
<PackageTags>context;correlation;logging;diagnostics</PackageTags>
15+
<PackageProjectUrl>https://github.com/CorrelatorSharp/CorrelatorSharp</PackageProjectUrl>
16+
<PackageLicenseUrl>https://github.com/CorrelatorSharp/CorrelatorSharp/blob/master/LICENSE.txt</PackageLicenseUrl>
17+
18+
</PropertyGroup>
19+
20+
<ItemGroup>
21+
<PackageReference Include="CorrelatorSharp.Logging" Version="1.3.0" />
22+
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.1" />
23+
</ItemGroup>
24+
25+
</Project>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
using Microsoft.Extensions.Logging;
3+
4+
namespace CorrelatorSharp.Logging.LoggerProvider
5+
{
6+
[ProviderAlias("CorrelatorSharp")]
7+
[ExcludeFromCodeCoverage]
8+
public class CorrelatorSharpLoggerProvider : Microsoft.Extensions.Logging.ILoggerProvider
9+
{
10+
private readonly IScopeProvider _scopeProvider;
11+
12+
public CorrelatorSharpLoggerProvider(IScopeProvider scopeProvider)
13+
{
14+
_scopeProvider = scopeProvider;
15+
}
16+
17+
public Microsoft.Extensions.Logging.ILogger CreateLogger(string categoryName)
18+
{
19+
return new CorrelatorSharpLoggerWrapper(CorrelatorSharp.Logging.LogManager.GetLogger(categoryName), _scopeProvider);
20+
}
21+
22+
public void Dispose()
23+
{
24+
25+
}
26+
27+
protected virtual void Dispose(bool disposing)
28+
{
29+
30+
}
31+
}
32+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
using System;
2+
using Microsoft.Extensions.Logging;
3+
4+
namespace CorrelatorSharp.Logging.LoggerProvider
5+
{
6+
public class CorrelatorSharpLoggerWrapper : Microsoft.Extensions.Logging.ILogger
7+
{
8+
private readonly CorrelatorSharp.Logging.ILogger _realLogger;
9+
private readonly IScopeProvider _scopeProvider;
10+
11+
public CorrelatorSharpLoggerWrapper(CorrelatorSharp.Logging.ILogger realLogger, IScopeProvider scopeProvider)
12+
{
13+
_realLogger = realLogger;
14+
_scopeProvider = scopeProvider;
15+
}
16+
17+
public void Log<TState>(
18+
LogLevel logLevel,
19+
EventId eventId,
20+
TState state,
21+
Exception exception,
22+
Func<TState, Exception, string> formatter)
23+
{
24+
switch (logLevel)
25+
{
26+
case LogLevel.Trace:
27+
_realLogger.LogTrace(exception, formatter(state, exception), eventId);
28+
break;
29+
case LogLevel.Debug:
30+
_realLogger.LogDebug(exception, formatter(state, exception), eventId);
31+
break;
32+
case LogLevel.Information:
33+
_realLogger.LogInfo(exception, formatter(state, exception), eventId);
34+
break;
35+
case LogLevel.Warning:
36+
_realLogger.LogWarn(exception, formatter(state, exception), eventId);
37+
break;
38+
case LogLevel.Error:
39+
_realLogger.LogError(exception, formatter(state, exception), eventId);
40+
break;
41+
case LogLevel.Critical:
42+
_realLogger.LogFatal(exception, formatter(state, exception), eventId);
43+
break;
44+
case LogLevel.None:
45+
break;
46+
default:
47+
throw new ArgumentOutOfRangeException(nameof(logLevel), logLevel, null);
48+
}
49+
}
50+
51+
public bool IsEnabled(LogLevel logLevel)
52+
{
53+
switch (logLevel)
54+
{
55+
case LogLevel.Trace:
56+
return _realLogger.IsTraceEnabled;
57+
case LogLevel.Debug:
58+
return _realLogger.IsDebugEnabled;
59+
case LogLevel.Information:
60+
return _realLogger.IsInfoEnabled;
61+
case LogLevel.Warning:
62+
return _realLogger.IsWarnEnabled;
63+
case LogLevel.Error:
64+
return _realLogger.IsErrorEnabled;
65+
case LogLevel.Critical:
66+
return _realLogger.IsFatalEnabled;
67+
default:
68+
throw new ArgumentOutOfRangeException(nameof(logLevel), logLevel, null);
69+
}
70+
}
71+
72+
public IDisposable BeginScope<TState>(TState state)
73+
{
74+
try
75+
{
76+
return _scopeProvider.BeginScope(state);
77+
}
78+
catch (Exception ex)
79+
{
80+
_scopeProvider.ErrorBuildingScope(ex);
81+
return null;
82+
}
83+
}
84+
}
85+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System;
2+
3+
namespace CorrelatorSharp.Logging.LoggerProvider
4+
{
5+
public interface IScopeProvider
6+
{
7+
IDisposable BeginScope<TState>(TState state);
8+
void ErrorBuildingScope(Exception exception);
9+
}
10+
}

appveyor.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
environment:
2+
package_version: '1.0.0'
3+
assembly_version: '1.0.0.0'
4+
5+
version: '$(package_version)+{build}'
6+
7+
image: Visual Studio 2017
8+
9+
dotnet_csproj:
10+
patch: true
11+
file: '**\*.csproj'
12+
version: '$(package_version)'
13+
assembly_version: '$(assembly_version)'
14+
15+
configuration: Release
16+
17+
before_build: dotnet restore
18+
19+
build:
20+
publish_nuget: true
21+
publish_nuget_symbols: true
22+
verbosity: minimal
23+
24+
deploy:
25+
- provider: GitHub
26+
description: |
27+
* Create a package for the logging provider abstraction from Microsoft
28+
on:
29+
appveyor_repo_tag: true
30+
31+
release: v$(package_version)
32+
auth_token:
33+
secure: y4HfARa+GScoSgdsOIb7A3L8TV93/wiPBgJENisycZ6yKwBANmPEe1MesK4IC6rm
34+
35+
- provider: NuGet
36+
api_key:
37+
secure: vZC+uEZj00A+9riSWLXqdnPtGa96W9SQkBy30dS2D5bOUdvteU9vOAP69QLJrY/o
38+
on:
39+
appveyor_repo_tag: true

0 commit comments

Comments
 (0)