From 16b36d4d89abde2026eea57d60109bb3a50772fc Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Mon, 4 Mar 2013 11:31:33 -0500 Subject: fixed multiple log files --- .../Logging/NlogManager.cs | 46 +++++++++++++++++----- 1 file changed, 37 insertions(+), 9 deletions(-) (limited to 'MediaBrowser.Common.Implementations/Logging') diff --git a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs index 1e525137c..c5296dcfb 100644 --- a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs +++ b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Logging; +using System.Linq; +using MediaBrowser.Model.Logging; using NLog; using NLog.Config; using NLog.Targets; @@ -56,23 +57,21 @@ namespace MediaBrowser.Common.Implementations.Logging logFile.FileName = path; logFile.Layout = "${longdate}, ${level}, ${logger}, ${message}"; - AddLogTarget(logFile, "ApplicationLogFile", level); + RemoveTarget("ApplicationLogFile"); + logFile.Name = "ApplicationLogFile"; + + AddLogTarget(logFile, level); } /// /// Adds the log target. /// /// The target. - /// The name. /// The level. - private void AddLogTarget(Target target, string name, LogSeverity level) + private void AddLogTarget(Target target, LogSeverity level) { var config = LogManager.Configuration; - - config.RemoveTarget(name); - - target.Name = name; - config.AddTarget(name, target); + config.AddTarget(target.Name, target); var rule = new LoggingRule("*", GetLogLevel(level), target); config.LoggingRules.Add(rule); @@ -80,6 +79,35 @@ namespace MediaBrowser.Common.Implementations.Logging LogManager.Configuration = config; } + /// + /// Removes the target. + /// + /// The name. + public void RemoveTarget(string name) + { + var config = LogManager.Configuration; + + var target = config.FindTargetByName(name); + + if (target != null) + { + foreach (var rule in config.LoggingRules.ToList()) + { + var contains = rule.Targets.Contains(target); + + rule.Targets.Remove(target); + + if (contains) + { + config.LoggingRules.Remove(rule); + } + } + + config.RemoveTarget(name); + LogManager.Configuration = config; + } + } + /// /// Gets the logger. /// -- cgit v1.2.3