manage Microsoft logs by NLog (#4080)

* now Microsoft log (Microsoft.*) are correctly supported by Nlog

* Microsoft log are now not logged under level info if tracing is not enabled.

* remove unused prefix NLog.

* Revert "Microsoft log are now not logged under level info if tracing is not enabled."

This reverts commit 00e94204e0.

* microsoft logs in console are preserved.
Only service log is clean of microsoft logs when tracing is not enabled.

* change loglevel min to debug

* Microsoft logs can be reactivate when Enhanced logging is set to true.

* adjust min & max level of serviceMicrosoftRule

* clean Microsoft logs in all NLog targets
This commit is contained in:
aurelien
2018-11-14 17:52:56 +01:00
committed by kaso17
parent a2eb4dbdbd
commit 6c1dcd1a7d
3 changed files with 64 additions and 2 deletions

View File

@@ -20,8 +20,8 @@ namespace Jackett.Common.Utils
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 = Path.Combine(settings.DataFolder, logFileName + ".{#####}.txt");
@@ -29,24 +29,54 @@ namespace Jackett.Common.Utils
logFile.MaxArchiveFiles = 5;
logFile.KeepFileOpen = false;
logFile.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
logConfig.AddTarget("file", logFile);
var microsoftRule = new LoggingRule();
microsoftRule.LoggerNamePattern = "Microsoft.*";
microsoftRule.SetLoggingLevels(LogLevel.Warn, LogLevel.Fatal);
microsoftRule.Final = true;
microsoftRule.Targets.Add(logFile);
var microsoftDebugRule = new LoggingRule();
microsoftDebugRule.LoggerNamePattern = "Microsoft.*";
microsoftDebugRule.SetLoggingLevels(LogLevel.Debug, LogLevel.Info);
microsoftDebugRule.Final = true;
if (settings.TracingEnabled)
{
microsoftDebugRule.Targets.Add(logFile);
}
logConfig.LoggingRules.Add(microsoftDebugRule);
var logFileRule = new LoggingRule("*", logLevel, logFile);
logConfig.LoggingRules.Add(logFileRule);
if (!fileOnly)
{
var logConsole = new ColoredConsoleTarget();
logConsole.Layout = "${simpledatetime} ${level} ${message} ${exception:format=ToString}";
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);
microsoftRule.Targets.Add(logConsole);
microsoftRule.Targets.Add(logService);
if (settings.TracingEnabled)
{
microsoftDebugRule.Targets.Add(logConsole);
microsoftDebugRule.Targets.Add(logService);
}
}
logConfig.LoggingRules.Add(microsoftRule);
return logConfig;
}

View File

@@ -140,6 +140,32 @@ namespace Jackett.Server
{
foreach (var rule in LogManager.Configuration.LoggingRules)
{
if (rule.LoggerNamePattern == "Microsoft.*")
{
if (!rule.Levels.Contains(LogLevel.Debug))
{
//don't change the first microsoftRule
continue;
}
var targets = LogManager.Configuration.ConfiguredNamedTargets;
if (level == LogLevel.Debug)
{
foreach (var target in targets)
{
rule.Targets.Add(target);
}
}
else
{
foreach (var target in targets)
{
rule.Targets.Remove(target);
}
}
continue;
}
if (level == LogLevel.Debug)
{
if (!rule.Levels.Contains(LogLevel.Debug))

View File

@@ -7,6 +7,7 @@ using Jackett.Common.Utils;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using NLog;
using NLog.Web;
using System;
@@ -184,6 +185,11 @@ namespace Jackett.Server
.PreferHostingUrls(true)
.UseConfiguration(Configuration)
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog();
}
}