sonarr-repo-only/NzbDrone.Common/LogConfiguration.cs

141 lines
4.9 KiB
C#
Raw Normal View History

2011-10-24 05:54:09 +00:00
using System;
2011-12-19 19:07:39 +00:00
using System.IO;
2011-10-24 05:54:09 +00:00
using NLog;
using NLog.Config;
using NLog.Targets;
namespace NzbDrone.Common
{
public static class LogConfiguration
{
static LogConfiguration()
{
if (EnviromentProvider.IsProduction)
{
LogManager.ThrowExceptions = false;
}
else
{
LogManager.ThrowExceptions = true;
}
if (LogManager.Configuration == null)
{
LogManager.Configuration = new LoggingConfiguration();
}
}
public static void RegisterConsoleLogger(LogLevel minLevel, string loggerNamePattern = "*")
{
try
{
var consoleTarget = new ConsoleTarget();
consoleTarget.Layout = "${message} ${exception}";
LogManager.Configuration.AddTarget(consoleTarget.GetType().Name, consoleTarget);
LogManager.Configuration.LoggingRules.Add(new LoggingRule(loggerNamePattern, minLevel, consoleTarget));
LogManager.ConfigurationReloaded += (sender, args) => RegisterConsoleLogger(minLevel, loggerNamePattern);
2011-10-24 05:54:09 +00:00
}
catch (Exception e)
{
Console.WriteLine(e);
if (LogManager.ThrowExceptions)
throw;
}
}
public static void RegisterUdpLogger()
{
try
{
2011-11-14 02:54:09 +00:00
var udpTarget = new NLogViewerTarget();
2011-10-24 05:54:09 +00:00
udpTarget.Address = "udp://127.0.0.1:20480";
udpTarget.IncludeCallSite = true;
udpTarget.IncludeSourceInfo = true;
udpTarget.IncludeNLogData = true;
udpTarget.IncludeNdc = true;
2011-11-14 02:54:09 +00:00
udpTarget.Parameters.Add(new NLogViewerParameterInfo
{
Name = "Exception",
Layout = "${exception:format=ToString}"
});
2011-10-24 05:54:09 +00:00
LogManager.Configuration.AddTarget(udpTarget.GetType().Name, udpTarget);
LogManager.Configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, udpTarget));
LogManager.ConfigurationReloaded += (sender, args) => RegisterUdpLogger();
2011-10-24 05:54:09 +00:00
}
catch (Exception e)
{
Console.WriteLine(e);
if (LogManager.ThrowExceptions)
throw;
}
}
2011-12-19 19:07:39 +00:00
2012-01-23 02:24:16 +00:00
private static FileTarget GetBaseTarget()
2011-12-19 19:07:39 +00:00
{
var fileTarget = new FileTarget();
fileTarget.AutoFlush = true;
2012-01-23 02:24:16 +00:00
fileTarget.ConcurrentWrites = true;
2011-12-19 19:07:39 +00:00
fileTarget.KeepFileOpen = false;
2012-01-23 02:24:16 +00:00
fileTarget.ConcurrentWriteAttemptDelay = 50;
fileTarget.ConcurrentWriteAttempts = 200;
fileTarget.Layout = @"${date:format=yy-M-d HH\:mm\:ss.f}|${replace:searchFor=NzbDrone.:replaceWith=:inner=${logger}}|${message}|${exception:format=ToString}";
return fileTarget;
}
public static void RegisterFileLogger(string fileName, LogLevel level)
{
var fileTarget = GetBaseTarget();
fileTarget.FileName = fileName;
LogManager.Configuration.AddTarget(Guid.NewGuid().ToString(), fileTarget);
LogManager.Configuration.LoggingRules.Add(new LoggingRule("*", level, fileTarget));
}
public static void RegisterRollingFileLogger(string fileName, LogLevel level)
{
var fileTarget = GetBaseTarget();
fileTarget.FileName = fileName;
fileTarget.ArchiveAboveSize = 200000; //500K
fileTarget.MaxArchiveFiles = 1;
fileTarget.EnableFileDelete = true;
fileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling;
2011-12-19 19:07:39 +00:00
2012-01-23 02:24:16 +00:00
LogManager.Configuration.AddTarget(Guid.NewGuid().ToString(), fileTarget);
LogManager.Configuration.LoggingRules.Add(new LoggingRule("*", level, fileTarget));
2011-12-19 19:07:39 +00:00
}
2011-10-24 05:54:09 +00:00
public static void RegisterExceptioneer()
{
2011-11-13 07:27:16 +00:00
if (EnviromentProvider.IsProduction)
2011-10-24 05:54:09 +00:00
{
2011-11-13 07:27:16 +00:00
try
{
var exTarget = new ExceptioneerTarget();
LogManager.Configuration.AddTarget("Exceptioneer", exTarget);
2012-01-17 07:55:55 +00:00
LogManager.Configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, exTarget));
LogManager.ConfigurationReloaded += (sender, args) => RegisterExceptioneer();
2011-11-13 07:27:16 +00:00
}
catch (Exception e)
{
Console.WriteLine(e);
}
2011-10-24 05:54:09 +00:00
}
}
public static void Reload()
{
LogManager.Configuration.Reload();
LogManager.ReconfigExistingLoggers();
}
}
}