Last active
August 1, 2017 16:23
-
-
Save damianh/fa529b8346a83f7f49a9 to your computer and use it in GitHub Desktop.
Using LibLog with Microsoft.Owin.Logging
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
namespace LigLogOwin | |
{ | |
using System; | |
using System.Diagnostics; | |
using LibLogOwin.Logging; | |
using Microsoft.Owin.Logging; | |
using Owin; | |
public class Startup | |
{ | |
public void Configuration(IAppBuilder app) | |
{ | |
app.SetLoggerFactory(new LibLogLoggerFactory()); | |
} | |
private class LibLogLoggerFactory : ILoggerFactory | |
{ | |
public ILogger Create(string name) | |
{ | |
return new LibLogLogger(LogProvider.GetLogger(name)); | |
} | |
private class LibLogLogger : ILogger | |
{ | |
private readonly ILog _logger; | |
public LibLogLogger(ILog logger) | |
{ | |
_logger = logger; | |
} | |
public bool WriteCore( | |
TraceEventType eventType, | |
int eventId, | |
object state, | |
Exception exception, | |
Func<object, Exception, string> formatter) | |
{ | |
return state == null | |
? _logger.Log(Map(eventType), null) // Equivalent to IsLogLevelXEnabled | |
//TODO What to do with eventId? | |
: _logger.Log(Map(eventType), () => formatter(state, exception), exception); | |
} | |
private LogLevel Map(TraceEventType eventType) | |
{ | |
switch(eventType) | |
{ | |
case TraceEventType.Critical: | |
return LogLevel.Fatal; | |
case TraceEventType.Error: | |
return System.LogLevel.Error; | |
case TraceEventType.Warning: | |
return LogLevel.Warn; | |
case TraceEventType.Information: | |
return LogLevel.Info; | |
case TraceEventType.Verbose: | |
return System.LogLevel.Trace; | |
case TraceEventType.Start: | |
return LogLevel.Info; | |
case TraceEventType.Stop: | |
return LogLevel.Info; | |
case TraceEventType.Suspend: | |
return LogLevel.Info; | |
case TraceEventType.Resume: | |
return LogLevel.Info; | |
case TraceEventType.Transfer: | |
return LogLevel.Info; | |
default: | |
throw new ArgumentOutOfRangeException("eventType"); | |
} | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment