Add SqlDebug to config

Signed-off-by: Basique Evangelist <basiqueevangelist@yandex.ru>
This commit is contained in:
Basique Evangelist 2019-04-24 18:10:34 +03:00
parent 831a902fd1
commit de29905324
Signed by untrusted user: BasiqueEvangelist
GPG Key ID: B370219149301706
3 changed files with 108 additions and 1 deletions

View File

@ -21,6 +21,7 @@ namespace JetKarmaBot
} }
public ProxySettings Proxy { get; private set; } public ProxySettings Proxy { get; private set; }
public bool SqlDebug { get; private set; }
} }
public abstract class ConfigBase public abstract class ConfigBase

View File

@ -28,8 +28,11 @@ namespace JetKarmaBot
var dbOptions = new DbContextOptionsBuilder<KarmaContext>() var dbOptions = new DbContextOptionsBuilder<KarmaContext>()
.UseMySql(cfg.ConnectionString); .UseMySql(cfg.ConnectionString);
c.AddInfo<Logger>(new LogInfo()); c.AddInfo<Logger>(new LogInfo());
if (cfg.SqlDebug)
{
dbOptions = dbOptions.UseLoggerFactory(c.GetInstance<NLoggerFactory>());
}
c.AddTransient(() => new KarmaContext(dbOptions.Options)); c.AddTransient(() => new KarmaContext(dbOptions.Options));
c.Add<JetKarmaBot>(); c.Add<JetKarmaBot>();

View File

@ -0,0 +1,103 @@
using System;
using Microsoft.Extensions.Logging;
using NLog;
using Perfusion;
namespace JetKarmaBot
{
public class NLoggerFactory : ILoggerFactory
{
[Inject]
private NLoggerProvider c;
public void AddProvider(ILoggerProvider provider)
{
}
public Microsoft.Extensions.Logging.ILogger CreateLogger(string categoryName) => c.CreateLogger(categoryName);
public void Dispose()
{
}
}
public class NLoggerProvider : ILoggerProvider
{
[Inject]
private Container c;
public Microsoft.Extensions.Logging.ILogger CreateLogger(string categoryName) => new LoggerVirtualizer(LogManager.GetLogger(categoryName));
public void Dispose()
{
}
}
public class LoggerVirtualizer : Microsoft.Extensions.Logging.ILogger
{
private Logger logger;
public LoggerVirtualizer(Logger logger)
{
this.logger = logger;
}
private Microsoft.Extensions.Logging.LogLevel getAppropriate(NLog.LogLevel level)
{
if (level == NLog.LogLevel.Trace)
return Microsoft.Extensions.Logging.LogLevel.Trace;
else if (level == NLog.LogLevel.Debug)
return Microsoft.Extensions.Logging.LogLevel.Debug;
else if (level == NLog.LogLevel.Info)
return Microsoft.Extensions.Logging.LogLevel.Information;
else if (level == NLog.LogLevel.Warn)
return Microsoft.Extensions.Logging.LogLevel.Warning;
else if (level == NLog.LogLevel.Error)
return Microsoft.Extensions.Logging.LogLevel.Error;
else if (level == NLog.LogLevel.Fatal)
return Microsoft.Extensions.Logging.LogLevel.Critical;
else if (level == NLog.LogLevel.Off)
return Microsoft.Extensions.Logging.LogLevel.None;
else
return Microsoft.Extensions.Logging.LogLevel.None;
}
private NLog.LogLevel getAppropriate(Microsoft.Extensions.Logging.LogLevel level)
{
switch (level)
{
case Microsoft.Extensions.Logging.LogLevel.Trace:
return NLog.LogLevel.Trace;
case Microsoft.Extensions.Logging.LogLevel.Debug:
return NLog.LogLevel.Debug;
case Microsoft.Extensions.Logging.LogLevel.Information:
return NLog.LogLevel.Info;
case Microsoft.Extensions.Logging.LogLevel.Warning:
return NLog.LogLevel.Warn;
case Microsoft.Extensions.Logging.LogLevel.Error:
return NLog.LogLevel.Error;
case Microsoft.Extensions.Logging.LogLevel.Critical:
return NLog.LogLevel.Fatal;
default:
return NLog.LogLevel.Off;
}
}
public IDisposable BeginScope<TState>(TState state) => new SomeDisposable();
public bool IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel)
{
return logger.IsEnabled(getAppropriate(logLevel));
}
public void Log<TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
string message = state.ToString();
if (exception != null) logger.Log(getAppropriate(logLevel), exception, formatter(state, exception));
else logger.Log(getAppropriate(logLevel), state);
}
}
public class SomeDisposable : IDisposable
{
public void Dispose()
{
}
}
}