using System; using System.Collections.Generic; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Internal; namespace NHibernate.Example.Web.Infrastructure { public class NHibernateToMicrosoftLogger : INHibernateLogger { private readonly ILogger _msLogger; public NHibernateToMicrosoftLogger(ILogger msLogger) { _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) { _msLogger.Log(MapLevels[logLevel], 0, new FormattedLogValues(state.Format, state.Args), exception, MessageFormatter); } public bool IsEnabled(NHibernateLogLevel logLevel) { return _msLogger.IsEnabled(MapLevels[logLevel]); } private static string MessageFormatter(object state, Exception error) { return state.ToString(); } } }