forked from nhibernate/nhibernate-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNHibernateToMicrosoftLogger.cs
43 lines (37 loc) · 1.33 KB
/
NHibernateToMicrosoftLogger.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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();
}
}
}