geekbot/Geekbot.net/Lib/LoggerFactory.cs
2018-05-02 20:19:11 +02:00

71 lines
No EOL
2.8 KiB
C#

using System;
using System.Text;
using NLog;
using NLog.Config;
using NLog.Targets;
using SumoLogic.Logging.NLog;
namespace Geekbot.net.Lib
{
public class LoggerFactory
{
public static Logger CreateNLog(RunParameters runParameters, bool sumologicActive)
{
var config = new LoggingConfiguration();
if (sumologicActive)
{
Console.WriteLine("Logging Geekbot Logs to Sumologic");
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
{
var minLevel = runParameters.Verbose ? LogLevel.Trace : LogLevel.Info;
config.LoggingRules.Add(
new LoggingRule("*", minLevel, LogLevel.Fatal,
new ColoredConsoleTarget
{
Name = "Console",
Encoding = Encoding.Unicode,
Layout = "[${longdate} ${level:format=FirstCharacter}] ${message} ${exception:format=toString}"
})
);
config.LoggingRules.Add(
new LoggingRule("*", minLevel, 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"
})
);
}
var loggerConfig = new LogFactory { Configuration = config };
return loggerConfig.GetCurrentClassLogger();
}
}
}