mirror of
https://github.com/Sonarr/Sonarr
synced 2025-01-03 13:45:02 +00:00
New: Add Compact Log Event Format option for console logging
Closes #7045
This commit is contained in:
parent
ae7f73208a
commit
0d914f4c53
5 changed files with 46 additions and 1 deletions
|
@ -3,6 +3,7 @@ using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NLog.Config;
|
using NLog.Config;
|
||||||
|
using NLog.Layouts.ClefJsonLayout;
|
||||||
using NLog.Targets;
|
using NLog.Targets;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
|
@ -13,6 +14,8 @@ namespace NzbDrone.Common.Instrumentation
|
||||||
public static class NzbDroneLogger
|
public static class NzbDroneLogger
|
||||||
{
|
{
|
||||||
private const string FILE_LOG_LAYOUT = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}}";
|
private const string FILE_LOG_LAYOUT = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}}";
|
||||||
|
public const string ConsoleLogLayout = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}}";
|
||||||
|
public static CompactJsonLayout ClefLogLayout = new CompactJsonLayout();
|
||||||
|
|
||||||
private static bool _isConfigured;
|
private static bool _isConfigured;
|
||||||
|
|
||||||
|
@ -124,7 +127,16 @@ namespace NzbDrone.Common.Instrumentation
|
||||||
var coloredConsoleTarget = new ColoredConsoleTarget();
|
var coloredConsoleTarget = new ColoredConsoleTarget();
|
||||||
|
|
||||||
coloredConsoleTarget.Name = "consoleLogger";
|
coloredConsoleTarget.Name = "consoleLogger";
|
||||||
coloredConsoleTarget.Layout = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}}";
|
|
||||||
|
var logFormat = Enum.TryParse<ConsoleLogFormat>(Environment.GetEnvironmentVariable("SONARR__LOG__CONSOLEFORMAT"), out var formatEnumValue)
|
||||||
|
? formatEnumValue
|
||||||
|
: ConsoleLogFormat.Standard;
|
||||||
|
|
||||||
|
coloredConsoleTarget.Layout = logFormat switch
|
||||||
|
{
|
||||||
|
ConsoleLogFormat.Clef => ClefLogLayout,
|
||||||
|
_ => ConsoleLogLayout
|
||||||
|
};
|
||||||
|
|
||||||
var loggingRule = new LoggingRule("*", level, coloredConsoleTarget);
|
var loggingRule = new LoggingRule("*", level, coloredConsoleTarget);
|
||||||
|
|
||||||
|
@ -219,4 +231,10 @@ namespace NzbDrone.Common.Instrumentation
|
||||||
return GetLogger(obj.GetType());
|
return GetLogger(obj.GetType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum ConsoleLogFormat
|
||||||
|
{
|
||||||
|
Standard,
|
||||||
|
Clef
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ public class LogOptions
|
||||||
public int? Rotate { get; set; }
|
public int? Rotate { get; set; }
|
||||||
public bool? Sql { get; set; }
|
public bool? Sql { get; set; }
|
||||||
public string ConsoleLevel { get; set; }
|
public string ConsoleLevel { get; set; }
|
||||||
|
public string ConsoleFormat { get; set; }
|
||||||
public bool? AnalyticsEnabled { get; set; }
|
public bool? AnalyticsEnabled { get; set; }
|
||||||
public string SyslogServer { get; set; }
|
public string SyslogServer { get; set; }
|
||||||
public int? SyslogPort { get; set; }
|
public int? SyslogPort { get; set; }
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="NLog" Version="5.3.2" />
|
<PackageReference Include="NLog" Version="5.3.2" />
|
||||||
|
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.0" />
|
||||||
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
|
||||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.11" />
|
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.11" />
|
||||||
<PackageReference Include="Sentry" Version="4.0.2" />
|
<PackageReference Include="Sentry" Version="4.0.2" />
|
||||||
|
|
|
@ -10,6 +10,7 @@ using NzbDrone.Common.Cache;
|
||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
|
using NzbDrone.Common.Instrumentation;
|
||||||
using NzbDrone.Common.Options;
|
using NzbDrone.Common.Options;
|
||||||
using NzbDrone.Core.Authentication;
|
using NzbDrone.Core.Authentication;
|
||||||
using NzbDrone.Core.Configuration.Events;
|
using NzbDrone.Core.Configuration.Events;
|
||||||
|
@ -38,6 +39,7 @@ namespace NzbDrone.Core.Configuration
|
||||||
bool AnalyticsEnabled { get; }
|
bool AnalyticsEnabled { get; }
|
||||||
string LogLevel { get; }
|
string LogLevel { get; }
|
||||||
string ConsoleLogLevel { get; }
|
string ConsoleLogLevel { get; }
|
||||||
|
ConsoleLogFormat ConsoleLogFormat { get; }
|
||||||
bool LogSql { get; }
|
bool LogSql { get; }
|
||||||
int LogRotate { get; }
|
int LogRotate { get; }
|
||||||
bool FilterSentryEvents { get; }
|
bool FilterSentryEvents { get; }
|
||||||
|
@ -223,6 +225,11 @@ namespace NzbDrone.Core.Configuration
|
||||||
public string LogLevel => _logOptions.Level ?? GetValue("LogLevel", "debug").ToLowerInvariant();
|
public string LogLevel => _logOptions.Level ?? GetValue("LogLevel", "debug").ToLowerInvariant();
|
||||||
public string ConsoleLogLevel => _logOptions.ConsoleLevel ?? GetValue("ConsoleLogLevel", string.Empty, persist: false);
|
public string ConsoleLogLevel => _logOptions.ConsoleLevel ?? GetValue("ConsoleLogLevel", string.Empty, persist: false);
|
||||||
|
|
||||||
|
public ConsoleLogFormat ConsoleLogFormat =>
|
||||||
|
Enum.TryParse<ConsoleLogFormat>(_logOptions.ConsoleFormat, out var enumValue)
|
||||||
|
? enumValue
|
||||||
|
: GetValueEnum("ConsoleLogFormat", ConsoleLogFormat.Standard, false);
|
||||||
|
|
||||||
public string Theme => _appOptions.Theme ?? GetValue("Theme", "auto", persist: false);
|
public string Theme => _appOptions.Theme ?? GetValue("Theme", "auto", persist: false);
|
||||||
|
|
||||||
public string PostgresHost => _postgresOptions?.Host ?? GetValue("PostgresHost", string.Empty, persist: false);
|
public string PostgresHost => _postgresOptions?.Host ?? GetValue("PostgresHost", string.Empty, persist: false);
|
||||||
|
|
|
@ -2,6 +2,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NLog.Config;
|
using NLog.Config;
|
||||||
|
using NLog.Targets;
|
||||||
using NLog.Targets.Syslog;
|
using NLog.Targets.Syslog;
|
||||||
using NLog.Targets.Syslog.Settings;
|
using NLog.Targets.Syslog.Settings;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
@ -51,6 +52,7 @@ namespace NzbDrone.Core.Instrumentation
|
||||||
var rules = LogManager.Configuration.LoggingRules;
|
var rules = LogManager.Configuration.LoggingRules;
|
||||||
|
|
||||||
// Console
|
// Console
|
||||||
|
ReconfigureConsole();
|
||||||
SetMinimumLogLevel(rules, "consoleLogger", minimumConsoleLogLevel);
|
SetMinimumLogLevel(rules, "consoleLogger", minimumConsoleLogLevel);
|
||||||
|
|
||||||
// Log Files
|
// Log Files
|
||||||
|
@ -109,6 +111,22 @@ namespace NzbDrone.Core.Instrumentation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ReconfigureConsole()
|
||||||
|
{
|
||||||
|
var consoleTarget = LogManager.Configuration.AllTargets.OfType<ColoredConsoleTarget>().FirstOrDefault();
|
||||||
|
|
||||||
|
if (consoleTarget != null)
|
||||||
|
{
|
||||||
|
var format = _configFileProvider.ConsoleLogFormat;
|
||||||
|
|
||||||
|
consoleTarget.Layout = format switch
|
||||||
|
{
|
||||||
|
ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
|
||||||
|
_ => NzbDroneLogger.ConsoleLogLayout
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void SetSyslogParameters(string syslogServer, int syslogPort, LogLevel minimumLogLevel)
|
private void SetSyslogParameters(string syslogServer, int syslogPort, LogLevel minimumLogLevel)
|
||||||
{
|
{
|
||||||
var syslogTarget = new SyslogTarget();
|
var syslogTarget = new SyslogTarget();
|
||||||
|
|
Loading…
Reference in a new issue