Replace Serilog with NLog

This commit is contained in:
runebaas 2018-05-01 22:55:47 +02:00
parent ec084a124b
commit d3fcfc8a5c
No known key found for this signature in database
GPG key ID: 2677AF508D0300D6
3 changed files with 62 additions and 29 deletions

View file

@ -24,17 +24,15 @@
<PackageReference Include="Nancy" Version="2.0.0-clinteastwood" />
<PackageReference Include="Nancy.Hosting.Self" Version="2.0.0-clinteastwood" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
<PackageReference Include="NLog" Version="4.5.3" />
<PackageReference Include="NLog.Config" Version="4.5.3" />
<PackageReference Include="Overwatch.Net" Version="3.1.0" />
<PackageReference Include="PokeApi.NET" Version="1.1.0" />
<PackageReference Include="Serilog" Version="2.6.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Literate" Version="3.0.1-dev-00044" />
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.1-dev-00771" />
<PackageReference Include="Serilog.Sinks.SumoLogic" Version="2.3.0" />
<PackageReference Include="SharpRaven" Version="2.3.2" />
<PackageReference Include="StackExchange.Redis">
<Version>1.2.6</Version>
</PackageReference>
<PackageReference Include="SumoLogic.Logging.NLog" Version="1.0.0.2" />
<PackageReference Include="System.Net.Http" Version="4.3.3" />
<PackageReference Include="System.Runtime.Serialization.Formatters" Version="4.3.0" />
<PackageReference Include="System.Runtime.Serialization.Json">

View file

@ -1,19 +1,18 @@
using System;
using Newtonsoft.Json;
using Serilog;
namespace Geekbot.net.Lib
{
public class GeekbotLogger : IGeekbotLogger
{
private readonly bool _sumologicActive;
private readonly ILogger _serilog;
private readonly NLog.Logger _logger;
private readonly JsonSerializerSettings _serializerSettings;
public GeekbotLogger(bool sumologicActive)
{
_sumologicActive = sumologicActive;
_serilog = LoggerFactory.CreateLogger(sumologicActive);
_logger = LoggerFactory.CreateNLog(sumologicActive);
_serializerSettings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
@ -24,29 +23,22 @@ namespace Geekbot.net.Lib
public void Debug(string source, string message, object extra = null)
{
_serilog.Debug(CreateLogString("Debug", source, message, null, extra));
_logger.Debug(CreateLogString("Debug", source, message, null, extra));
}
public void Information(string source, string message, object extra = null)
{
_serilog.Information(CreateLogString("Information", source, message, null, extra));
_logger.Info(CreateLogString("Information", source, message, null, extra));
}
public void Warning(string source, string message, Exception stackTrace = null, object extra = null)
{
_serilog.Warning(CreateLogString("Warning", source, message, stackTrace, extra));
_logger.Warn(CreateLogString("Warning", source, message, stackTrace, extra));
}
public void Error(string source, string message, Exception stackTrace, object extra = null)
{
_serilog.Error(CreateLogString("Error", source, message, stackTrace, extra));
}
private void HandleLogObject(string type, string source, string message, Exception stackTrace = null, object extra = null)
{
var logJson = CreateLogString(type, source, message, stackTrace, extra);
// fuck serilog
_serilog.Information(logJson, stackTrace + "}");
_logger.Error(stackTrace, CreateLogString("Error", source, message, stackTrace, extra));
}
private string CreateLogString(string type, string source, string message, Exception stackTrace = null, object extra = null)

View file

@ -1,27 +1,70 @@
using System;
using Serilog;
using Serilog.Sinks.SumoLogic;
using System.Text;
using NLog;
using NLog.Config;
using NLog.Targets;
using SumoLogic.Logging.NLog;
namespace Geekbot.net.Lib
{
public class LoggerFactory
{
public static ILogger CreateLogger(bool sumologicActive)
public static Logger CreateNLog(bool sumologicActive)
{
var loggerCreation = new LoggerConfiguration();
var template = "{Message}{NewLine}";
var config = new LoggingConfiguration();
if (sumologicActive)
{
Console.WriteLine("Logging Geekbot Logs to Sumologic");
loggerCreation.WriteTo.SumoLogic(Environment.GetEnvironmentVariable("GEEKBOT_SUMO"),
outputTemplate: template);
config.LoggingRules.Add(
new LoggingRule("*", LogLevel.Info, LogLevel.Fatal,
new BufferedSumoLogicTarget()
{
Url = Environment.GetEnvironmentVariable("GEEKBOT_SUMO"),
SourceName = "GeekbotLogger",
Layout = "${message}",
UseConsoleLog = false,
MaxQueueSizeBytes = 500000,
FlushingAccuracy = 250,
MaxFlushInterval = 10000,
OptimizeBufferReuse = true,
MessagesPerRequest = 10,
RetryInterval = 5000,
Name = "Geekbot"
})
);
}
else
{
loggerCreation.WriteTo.LiterateConsole(outputTemplate: template);
loggerCreation.WriteTo.RollingFile("Logs/geekbot-{Date}.txt", shared: true, outputTemplate: template);
config.LoggingRules.Add(
new LoggingRule("*", LogLevel.Trace, LogLevel.Fatal,
new ColoredConsoleTarget
{
Name = "Console",
Encoding = Encoding.Unicode,
Layout = "[${longdate} ${level:format=FirstCharacter}] ${message} ${exception:format=toString}"
})
);
config.LoggingRules.Add(
new LoggingRule("*", LogLevel.Trace, LogLevel.Fatal,
new FileTarget
{
Name = "File",
Layout = "[${longdate} ${level}] ${message}",
Encoding = Encoding.Unicode,
LineEnding = LineEndingMode.Default,
MaxArchiveFiles = 30,
ArchiveNumbering = ArchiveNumberingMode.Date,
ArchiveEvery = FileArchivePeriod.Day,
ArchiveFileName = "./Logs/Archive/{#####}.log",
FileName = "./Logs/Geekbot.log"
})
);
}
return loggerCreation.CreateLogger();
var loggerConfig = new LogFactory { Configuration = config };
return loggerConfig.GetCurrentClassLogger();
}
}
}