1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-10-30 07:22:35 +01:00

New: Trace/Debug logging will keep the last 50 files instead of only the last 5

This commit is contained in:
Mark McDowall 2014-08-25 22:48:27 -07:00
parent 0628b3dc2d
commit 0c839d1e11
2 changed files with 25 additions and 12 deletions

View File

@ -10,16 +10,11 @@ using NzbDrone.Core.Messaging.Events;
namespace NzbDrone.Core.Instrumentation namespace NzbDrone.Core.Instrumentation
{ {
public interface ISetLoggingLevel public class ReconfigureLogging : IHandleAsync<ConfigFileSavedEvent>, IHandleAsync<ApplicationStartedEvent>
{
void Reconfigure();
}
public class SetLoggingLevel : ISetLoggingLevel, IHandleAsync<ConfigFileSavedEvent>, IHandleAsync<ApplicationStartedEvent>
{ {
private readonly IConfigFileProvider _configFileProvider; private readonly IConfigFileProvider _configFileProvider;
public SetLoggingLevel(IConfigFileProvider configFileProvider) public ReconfigureLogging(IConfigFileProvider configFileProvider)
{ {
_configFileProvider = configFileProvider; _configFileProvider = configFileProvider;
} }
@ -29,10 +24,11 @@ namespace NzbDrone.Core.Instrumentation
var minimumLogLevel = LogLevel.FromString(_configFileProvider.LogLevel); var minimumLogLevel = LogLevel.FromString(_configFileProvider.LogLevel);
var rules = LogManager.Configuration.LoggingRules; var rules = LogManager.Configuration.LoggingRules;
var rollingFileLogger = rules.Single(s => s.Targets.Any(t => t is NzbDroneFileTarget)); var rollingFileLoggerRule = rules.Single(s => s.Targets.Any(t => t is NzbDroneFileTarget));
rollingFileLogger.EnableLoggingForLevel(LogLevel.Trace); rollingFileLoggerRule.EnableLoggingForLevel(LogLevel.Trace);
SetMinimumLogLevel(rollingFileLogger, minimumLogLevel); SetMinimumLogLevel(rollingFileLoggerRule, minimumLogLevel);
SetMaxArchiveFiles(rollingFileLoggerRule, minimumLogLevel);
LogManager.ReconfigExistingLoggers(); LogManager.ReconfigExistingLoggers();
} }
@ -53,6 +49,23 @@ namespace NzbDrone.Core.Instrumentation
} }
} }
private void SetMaxArchiveFiles(LoggingRule rule, LogLevel minimumLogLevel)
{
var target = rule.Targets.Single(t => t is NzbDroneFileTarget) as NzbDroneFileTarget;
if (target == null) return;
if (minimumLogLevel >= LogLevel.Info)
{
target.MaxArchiveFiles = 5;
}
else
{
target.MaxArchiveFiles = 50;
}
}
private List<LogLevel> GetLogLevels() private List<LogLevel> GetLogLevels()
{ {
return new List<LogLevel> return new List<LogLevel>

View File

@ -436,7 +436,7 @@
<Compile Include="Instrumentation\Log.cs" /> <Compile Include="Instrumentation\Log.cs" />
<Compile Include="Instrumentation\LogRepository.cs" /> <Compile Include="Instrumentation\LogRepository.cs" />
<Compile Include="Instrumentation\LogService.cs" /> <Compile Include="Instrumentation\LogService.cs" />
<Compile Include="Instrumentation\SetLoggingLevel.cs" /> <Compile Include="Instrumentation\ReconfigureLogging.cs" />
<Compile Include="Jobs\JobRepository.cs" /> <Compile Include="Jobs\JobRepository.cs" />
<Compile Include="Jobs\ScheduledTask.cs" /> <Compile Include="Jobs\ScheduledTask.cs" />
<Compile Include="Jobs\Scheduler.cs" /> <Compile Include="Jobs\Scheduler.cs" />