mirror of https://github.com/Jackett/Jackett
72 lines
2.7 KiB
C#
72 lines
2.7 KiB
C#
|
using Jackett.Common;
|
|||
|
using Jackett.Common.Models.Config;
|
|||
|
using Jackett.Common.Services;
|
|||
|
using NLog;
|
|||
|
using NLog.Config;
|
|||
|
using NLog.Targets;
|
|||
|
using System.IO;
|
|||
|
|
|||
|
namespace Jackett.Server
|
|||
|
{
|
|||
|
public static class Initialisation
|
|||
|
{
|
|||
|
public static LoggingConfiguration SetupLogging(RuntimeSettings settings)
|
|||
|
{
|
|||
|
var logFileName = settings.CustomLogFileName ?? "log.txt";
|
|||
|
var logLevel = settings.TracingEnabled ? NLog.LogLevel.Debug : NLog.LogLevel.Info;
|
|||
|
// Add custom date time format renderer as the default is too long
|
|||
|
ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("simpledatetime", typeof(SimpleDateTimeRenderer));
|
|||
|
|
|||
|
var logConfig = new LoggingConfiguration();
|
|||
|
var logFile = new FileTarget();
|
|||
|
logConfig.AddTarget("file", logFile);
|
|||
|
logFile.Layout = "${longdate} ${level} ${message} ${exception:format=ToString}";
|
|||
|
logFile.FileName = Path.Combine(settings.DataFolder, logFileName);
|
|||
|
logFile.ArchiveFileName = "log.{#####}.txt";
|
|||
|
logFile.ArchiveAboveSize = 500000;
|
|||
|
logFile.MaxArchiveFiles = 5;
|
|||
|
logFile.KeepFileOpen = false;
|
|||
|
logFile.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
|||
|
var logFileRule = new LoggingRule("*", logLevel, logFile);
|
|||
|
logConfig.LoggingRules.Add(logFileRule);
|
|||
|
|
|||
|
var logConsole = new ColoredConsoleTarget();
|
|||
|
logConfig.AddTarget("console", logConsole);
|
|||
|
|
|||
|
logConsole.Layout = "${simpledatetime} ${level} ${message} ${exception:format=ToString}";
|
|||
|
var logConsoleRule = new LoggingRule("*", logLevel, logConsole);
|
|||
|
logConfig.LoggingRules.Add(logConsoleRule);
|
|||
|
|
|||
|
var logService = new LogCacheService();
|
|||
|
logConfig.AddTarget("service", logService);
|
|||
|
var serviceRule = new LoggingRule("*", logLevel, logService);
|
|||
|
logConfig.LoggingRules.Add(serviceRule);
|
|||
|
|
|||
|
return logConfig;
|
|||
|
}
|
|||
|
|
|||
|
public static void SetLogLevel(LogLevel level)
|
|||
|
{
|
|||
|
foreach (var rule in LogManager.Configuration.LoggingRules)
|
|||
|
{
|
|||
|
if (level == LogLevel.Debug)
|
|||
|
{
|
|||
|
if (!rule.Levels.Contains(LogLevel.Debug))
|
|||
|
{
|
|||
|
rule.EnableLoggingForLevel(LogLevel.Debug);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (rule.Levels.Contains(LogLevel.Debug))
|
|||
|
{
|
|||
|
rule.DisableLoggingForLevel(LogLevel.Debug);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
LogManager.ReconfigExistingLoggers();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|