Skip to content

Commit 4143042

Browse files
committed
Add log4net logging adapter.
1 parent 988aa78 commit 4143042

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

MySqlConnector.sln

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Microsoft Visual Studio Solution File, Format Version 12.00
22
# Visual Studio 15
3-
VisualStudioVersion = 15.0.27004.2009
3+
VisualStudioVersion = 15.0.27004.2010
44
MinimumVisualStudioVersion = 10.0.40219.1
55
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlConnector", "src\MySqlConnector\MySqlConnector.csproj", "{F82378AF-274E-4FBA-8E45-27126D607B85}"
66
EndProject
@@ -12,6 +12,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlConnector.Performance"
1212
EndProject
1313
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Conformance.Tests", "tests\Conformance.Tests\Conformance.Tests.csproj", "{CC0DA702-43E8-471E-9320-F36685C540A1}"
1414
EndProject
15+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlConnector.Logging.log4net", "src\MySqlConnector.Logging.log4net\MySqlConnector.Logging.log4net.csproj", "{A15647B8-FA3F-4536-BF4E-4F93F2FBFC75}"
16+
EndProject
1517
Global
1618
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1719
Debug|Any CPU = Debug|Any CPU
@@ -38,6 +40,10 @@ Global
3840
{CC0DA702-43E8-471E-9320-F36685C540A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
3941
{CC0DA702-43E8-471E-9320-F36685C540A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
4042
{CC0DA702-43E8-471E-9320-F36685C540A1}.Release|Any CPU.Build.0 = Release|Any CPU
43+
{A15647B8-FA3F-4536-BF4E-4F93F2FBFC75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
44+
{A15647B8-FA3F-4536-BF4E-4F93F2FBFC75}.Debug|Any CPU.Build.0 = Debug|Any CPU
45+
{A15647B8-FA3F-4536-BF4E-4F93F2FBFC75}.Release|Any CPU.ActiveCfg = Release|Any CPU
46+
{A15647B8-FA3F-4536-BF4E-4F93F2FBFC75}.Release|Any CPU.Build.0 = Release|Any CPU
4147
EndGlobalSection
4248
GlobalSection(SolutionProperties) = preSolution
4349
HideSolutionNode = FALSE
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Reflection;
4+
using log4net;
5+
using log4net.Core;
6+
7+
namespace MySqlConnector.Logging
8+
{
9+
public sealed class Log4netLoggerProvider : IMySqlConnectorLoggerProvider
10+
{
11+
public IMySqlConnectorLogger CreateLogger(string name) => new Log4netLogger(LogManager.GetLogger(s_loggerAssembly, "MySqlConnector." + name));
12+
13+
static readonly Assembly s_loggerAssembly = typeof(Log4netLogger).GetTypeInfo().Assembly;
14+
static readonly Type s_loggerType = typeof(Log4netLogger);
15+
16+
private class Log4netLogger : IMySqlConnectorLogger
17+
{
18+
public Log4netLogger(ILoggerWrapper log) => m_logger = log.Logger;
19+
20+
public bool IsEnabled(MySqlConnectorLogLevel level) => m_logger.IsEnabledFor(GetLevel(level));
21+
22+
public void Log(MySqlConnectorLogLevel level, string message, object[] args = null, Exception exception = null)
23+
{
24+
if (args == null || args.Length == 0)
25+
m_logger.Log(s_loggerType, GetLevel(level), message, exception);
26+
else
27+
m_logger.Log(s_loggerType, GetLevel(level), string.Format(CultureInfo.InvariantCulture, message, args), exception);
28+
}
29+
30+
private static Level GetLevel(MySqlConnectorLogLevel level)
31+
{
32+
switch (level)
33+
{
34+
case MySqlConnectorLogLevel.Trace:
35+
return Level.Trace;
36+
case MySqlConnectorLogLevel.Debug:
37+
return Level.Debug;
38+
case MySqlConnectorLogLevel.Info:
39+
return Level.Info;
40+
case MySqlConnectorLogLevel.Warn:
41+
return Level.Warn;
42+
case MySqlConnectorLogLevel.Error:
43+
return Level.Error;
44+
case MySqlConnectorLogLevel.Fatal:
45+
return Level.Fatal;
46+
default:
47+
throw new ArgumentOutOfRangeException(nameof(level), level, "Invalid value for 'level'.");
48+
}
49+
}
50+
51+
readonly ILogger m_logger;
52+
}
53+
}
54+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>net45;net46;netstandard1.3;netstandard2.0</TargetFrameworks>
5+
<Title>MySQL Connector Logging Adapter for log4net</Title>
6+
<Copyright>Copyright 2017 Bradley Grainger</Copyright>
7+
<Authors>Bradley Grainger</Authors>
8+
<PackageTags>mysql;mysqlconnector;async;ado.net;database;netcore</PackageTags>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="log4net" Version="2.0.8" />
13+
</ItemGroup>
14+
15+
<ItemGroup>
16+
<ProjectReference Include="..\MySqlConnector\MySqlConnector.csproj" />
17+
</ItemGroup>
18+
19+
</Project>

0 commit comments

Comments
 (0)