geekbot/Geekbot.net/Lib/LoggerFactory.cs

71 lines
2.8 KiB
C#
Raw Normal View History

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