1
0
Fork 0
mirror of https://github.com/Radarr/Radarr synced 2025-02-22 14:21:14 +00:00

Cleanse console log messages

(cherry picked from commit 609e964794e17343f63e1ecff3fef323e3d284ff)
This commit is contained in:
Mark McDowall 2025-02-16 19:15:27 -08:00 committed by Bogdan
parent efa2913dbc
commit c6526c34e9
5 changed files with 68 additions and 19 deletions

View file

@ -0,0 +1,21 @@
using System.Text;
using NLog;
using NLog.Layouts.ClefJsonLayout;
using NzbDrone.Common.EnvironmentInfo;
namespace NzbDrone.Common.Instrumentation;
public class CleansingClefLogLayout : CompactJsonLayout
{
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
{
base.RenderFormattedMessage(logEvent, target);
if (RuntimeInfo.IsProduction)
{
var result = CleanseLogMessage.Cleanse(target.ToString());
target.Clear();
target.Append(result);
}
}
}

View file

@ -0,0 +1,26 @@
using System.Text;
using NLog;
using NLog.Layouts;
using NzbDrone.Common.EnvironmentInfo;
namespace NzbDrone.Common.Instrumentation;
public class CleansingConsoleLogLayout : SimpleLayout
{
public CleansingConsoleLogLayout(string format)
: base(format)
{
}
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
{
base.RenderFormattedMessage(logEvent, target);
if (RuntimeInfo.IsProduction)
{
var result = CleanseLogMessage.Cleanse(target.ToString());
target.Clear();
target.Append(result);
}
}
}

View file

@ -4,7 +4,7 @@
namespace NzbDrone.Common.Instrumentation namespace NzbDrone.Common.Instrumentation
{ {
public class NzbDroneFileTarget : FileTarget public class CleansingFileTarget : FileTarget
{ {
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target) protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
{ {

View file

@ -3,7 +3,6 @@
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,9 +12,11 @@ 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}${exception:format=Data}${newline}}"; private const string FileLogLayout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
public const string ConsoleLogLayout = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}"; private const string ConsoleFormat = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
public static CompactJsonLayout ClefLogLayout = new CompactJsonLayout();
private static readonly CleansingConsoleLogLayout CleansingConsoleLayout = new (ConsoleFormat);
private static readonly CleansingClefLogLayout ClefLogLayout = new ();
private static bool _isConfigured; private static bool _isConfigured;
@ -119,11 +120,7 @@ private static void RegisterConsole()
? formatEnumValue ? formatEnumValue
: ConsoleLogFormat.Standard; : ConsoleLogFormat.Standard;
coloredConsoleTarget.Layout = logFormat switch ConfigureConsoleLayout(coloredConsoleTarget, logFormat);
{
ConsoleLogFormat.Clef => ClefLogLayout,
_ => ConsoleLogLayout
};
var loggingRule = new LoggingRule("*", level, coloredConsoleTarget); var loggingRule = new LoggingRule("*", level, coloredConsoleTarget);
@ -140,7 +137,7 @@ private static void RegisterAppFile(IAppFolderInfo appFolderInfo)
private static void RegisterAppFile(IAppFolderInfo appFolderInfo, string name, string fileName, int maxArchiveFiles, LogLevel minLogLevel) private static void RegisterAppFile(IAppFolderInfo appFolderInfo, string name, string fileName, int maxArchiveFiles, LogLevel minLogLevel)
{ {
var fileTarget = new NzbDroneFileTarget(); var fileTarget = new CleansingFileTarget();
fileTarget.Name = name; fileTarget.Name = name;
fileTarget.FileName = Path.Combine(appFolderInfo.GetLogFolder(), fileName); fileTarget.FileName = Path.Combine(appFolderInfo.GetLogFolder(), fileName);
@ -153,7 +150,7 @@ private static void RegisterAppFile(IAppFolderInfo appFolderInfo, string name, s
fileTarget.MaxArchiveFiles = maxArchiveFiles; fileTarget.MaxArchiveFiles = maxArchiveFiles;
fileTarget.EnableFileDelete = true; fileTarget.EnableFileDelete = true;
fileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling; fileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling;
fileTarget.Layout = FILE_LOG_LAYOUT; fileTarget.Layout = FileLogLayout;
var loggingRule = new LoggingRule("*", minLogLevel, fileTarget); var loggingRule = new LoggingRule("*", minLogLevel, fileTarget);
@ -172,7 +169,7 @@ private static void RegisterUpdateFile(IAppFolderInfo appFolderInfo)
fileTarget.ConcurrentWrites = false; fileTarget.ConcurrentWrites = false;
fileTarget.ConcurrentWriteAttemptDelay = 50; fileTarget.ConcurrentWriteAttemptDelay = 50;
fileTarget.ConcurrentWriteAttempts = 100; fileTarget.ConcurrentWriteAttempts = 100;
fileTarget.Layout = FILE_LOG_LAYOUT; fileTarget.Layout = FileLogLayout;
var loggingRule = new LoggingRule("*", LogLevel.Trace, fileTarget); var loggingRule = new LoggingRule("*", LogLevel.Trace, fileTarget);
@ -217,6 +214,15 @@ public static Logger GetLogger(object obj)
{ {
return GetLogger(obj.GetType()); return GetLogger(obj.GetType());
} }
public static void ConfigureConsoleLayout(ColoredConsoleTarget target, ConsoleLogFormat format)
{
target.Layout = format switch
{
ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
_ => NzbDroneLogger.CleansingConsoleLayout
};
}
} }
public enum ConsoleLogFormat public enum ConsoleLogFormat

View file

@ -95,7 +95,7 @@ private void SetMinimumLogLevel(LoggingRule rule, LogLevel minimumLogLevel)
private void ReconfigureFile() private void ReconfigureFile()
{ {
foreach (var target in LogManager.Configuration.AllTargets.OfType<NzbDroneFileTarget>()) foreach (var target in LogManager.Configuration.AllTargets.OfType<CleansingFileTarget>())
{ {
target.MaxArchiveFiles = _configFileProvider.LogRotate; target.MaxArchiveFiles = _configFileProvider.LogRotate;
target.ArchiveAboveSize = _configFileProvider.LogSizeLimit.Megabytes(); target.ArchiveAboveSize = _configFileProvider.LogSizeLimit.Megabytes();
@ -120,11 +120,7 @@ private void ReconfigureConsole()
{ {
var format = _configFileProvider.ConsoleLogFormat; var format = _configFileProvider.ConsoleLogFormat;
consoleTarget.Layout = format switch NzbDroneLogger.ConfigureConsoleLayout(consoleTarget, format);
{
ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
_ => NzbDroneLogger.ConsoleLogLayout
};
} }
} }