Skip to content

Commit 41d3890

Browse files
authored
Merge pull request #470 from snakefoot/master
Add NLogLoggerProvider for NLog 4.5.0.
2 parents 6919585 + f620353 commit 41d3890

File tree

3 files changed

+78
-0
lines changed

3 files changed

+78
-0
lines changed

MySqlConnector.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlConnector.Logging.Micr
1818
EndProject
1919
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlConnector.Logging.Serilog", "src\MySqlConnector.Logging.Serilog\MySqlConnector.Logging.Serilog.csproj", "{38806B85-6526-4A81-9905-45D3411B0AE2}"
2020
EndProject
21+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlConnector.Logging.NLog", "src\MySqlConnector.Logging.NLog\MySqlConnector.Logging.NLog.csproj", "{92015BEE-563A-4595-9243-0510D2B8767F}"
22+
EndProject
2123
Global
2224
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2325
Debug|Any CPU = Debug|Any CPU
@@ -56,6 +58,10 @@ Global
5658
{38806B85-6526-4A81-9905-45D3411B0AE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
5759
{38806B85-6526-4A81-9905-45D3411B0AE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
5860
{38806B85-6526-4A81-9905-45D3411B0AE2}.Release|Any CPU.Build.0 = Release|Any CPU
61+
{92015BEE-563A-4595-9243-0510D2B8767F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
62+
{92015BEE-563A-4595-9243-0510D2B8767F}.Debug|Any CPU.Build.0 = Debug|Any CPU
63+
{92015BEE-563A-4595-9243-0510D2B8767F}.Release|Any CPU.ActiveCfg = Release|Any CPU
64+
{92015BEE-563A-4595-9243-0510D2B8767F}.Release|Any CPU.Build.0 = Release|Any CPU
5965
EndGlobalSection
6066
GlobalSection(SolutionProperties) = preSolution
6167
HideSolutionNode = FALSE
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>net45;net46;netstandard1.3;netstandard2.0</TargetFrameworks>
5+
<Title>MySqlConnector Logging Adapter for NLog</Title>
6+
<Description>Writes lightly-structured MySqlConnector logging output to NLog.</Description>
7+
<Copyright>Copyright 2017 Bradley Grainger</Copyright>
8+
<Authors>Bradley Grainger</Authors>
9+
<PackageTags>mysql;mysqlconnector;async;ado.net;database;netcore;NLog;logging</PackageTags>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="NLog" Version="4.5.0" />
14+
</ItemGroup>
15+
16+
<ItemGroup>
17+
<ProjectReference Include="..\MySqlConnector\MySqlConnector.csproj" />
18+
</ItemGroup>
19+
20+
</Project>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using System;
2+
using System.Globalization;
3+
using NLog;
4+
5+
namespace MySqlConnector.Logging
6+
{
7+
public sealed class NLogLoggerProvider : IMySqlConnectorLoggerProvider
8+
{
9+
public IMySqlConnectorLogger CreateLogger(string name) => new NLogLogger(LogManager.GetLogger("MySqlConnector." + name));
10+
11+
static readonly Type s_loggerType = typeof(NLogLogger);
12+
13+
private class NLogLogger : IMySqlConnectorLogger
14+
{
15+
public NLogLogger(Logger logger) => m_logger = logger;
16+
17+
public bool IsEnabled(MySqlConnectorLogLevel level) => m_logger.IsEnabled(GetLevel(level));
18+
19+
public void Log(MySqlConnectorLogLevel level, string message, object[] args = null, Exception exception = null)
20+
{
21+
LogLevel logLevel = GetLevel(level);
22+
if (m_logger.IsEnabled(logLevel))
23+
{
24+
m_logger.Log(s_loggerType, LogEventInfo.Create(logLevel, m_logger.Name, exception, CultureInfo.InvariantCulture, message, args));
25+
}
26+
}
27+
28+
private static LogLevel GetLevel(MySqlConnectorLogLevel level)
29+
{
30+
switch (level)
31+
{
32+
case MySqlConnectorLogLevel.Trace:
33+
return LogLevel.Trace;
34+
case MySqlConnectorLogLevel.Debug:
35+
return LogLevel.Debug;
36+
case MySqlConnectorLogLevel.Info:
37+
return LogLevel.Info;
38+
case MySqlConnectorLogLevel.Warn:
39+
return LogLevel.Warn;
40+
case MySqlConnectorLogLevel.Error:
41+
return LogLevel.Error;
42+
case MySqlConnectorLogLevel.Fatal:
43+
return LogLevel.Fatal;
44+
default:
45+
throw new ArgumentOutOfRangeException(nameof(level), level, "Invalid value for 'level'.");
46+
}
47+
}
48+
49+
readonly Logger m_logger;
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)