Last active
August 14, 2020 21:06
-
-
Save ngbrown/69ae7fa30114227b23171ab5d9ba5345 to your computer and use it in GitHub Desktop.
NHibernate to MicrosoftLogger Factory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using Microsoft.Extensions.Logging; | |
using NHibernate; | |
namespace App.Infrastructure | |
{ | |
public class NHibernateMicrosoftLoggerFactory : INHibernateLoggerFactory | |
{ | |
private readonly Microsoft.Extensions.Logging.ILoggerFactory loggerFactory; | |
public NHibernateMicrosoftLoggerFactory(Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) | |
{ | |
this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); | |
} | |
public INHibernateLogger LoggerFor(string keyName) | |
{ | |
var msLogger = this.loggerFactory.CreateLogger(keyName); | |
return new NHibernateMicrosoftLogger(msLogger); | |
} | |
public INHibernateLogger LoggerFor(System.Type type) | |
{ | |
var msLogger = this.loggerFactory.CreateLogger(type); | |
return new NHibernateMicrosoftLogger(msLogger); | |
} | |
} | |
public class NHibernateMicrosoftLogger : INHibernateLogger | |
{ | |
private readonly ILogger msLogger; | |
public NHibernateMicrosoftLogger(ILogger msLogger) | |
{ | |
this.msLogger = msLogger ?? throw new ArgumentNullException(nameof(msLogger)); | |
} | |
private static readonly Dictionary<NHibernateLogLevel, LogLevel> MapLevels = | |
new Dictionary<NHibernateLogLevel, LogLevel> { | |
{NHibernateLogLevel.Trace, LogLevel.Trace}, | |
{NHibernateLogLevel.Debug, LogLevel.Debug}, | |
{NHibernateLogLevel.Info, LogLevel.Information}, | |
{NHibernateLogLevel.Warn, LogLevel.Warning}, | |
{NHibernateLogLevel.Error, LogLevel.Error}, | |
{NHibernateLogLevel.Fatal, LogLevel.Critical}, | |
{NHibernateLogLevel.None, LogLevel.None}, | |
}; | |
public void Log(NHibernateLogLevel logLevel, NHibernateLogValues state, Exception exception) | |
{ | |
this.msLogger.Log(MapLevels[logLevel], exception, state.Format, state.Args); | |
} | |
public bool IsEnabled(NHibernateLogLevel logLevel) | |
{ | |
return this.msLogger.IsEnabled(MapLevels[logLevel]); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment