diff --git a/Ark.Tools.NLog/NlogConfigurer.cs b/Ark.Tools.NLog/NlogConfigurer.cs index e93ec2a6f..300a07a3d 100644 --- a/Ark.Tools.NLog/NlogConfigurer.cs +++ b/Ark.Tools.NLog/NlogConfigurer.cs @@ -8,12 +8,14 @@ using NLog; using NLog.Common; using NLog.Config; +using NLog.Filters; using NLog.LayoutRenderers; using NLog.Layouts; using NLog.Targets; using NLog.Targets.Wrappers; using System; +using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.Reflection; @@ -564,6 +566,44 @@ public Configurer WithMailRule(string loggerPattern, LogLevel minLevel, LogLevel #endregion + #region Filters + public Configurer WithDatabaseFilters(string loggerPattern, IList filters, LogLevel level, bool final = false) + { + var target = _config.FindTargetByName(DatabaseTarget); + var ruleName = $"{DatabaseTarget}-{loggerPattern}-filters"; + _config.RemoveRuleByName(ruleName); + + var rule = new LoggingRule(loggerPattern, level, target) { RuleName = ruleName, Final = final }; + + foreach (var filter in filters) + { + rule.Filters.Add(filter); + } + + _config.AddRule(rule); + + return this; + } + + public Configurer WithDatabaseFilters(string loggerPattern, IList filters, LogLevel minLevel, LogLevel maxLevel, bool final = false) + { + var target = _config.FindTargetByName(DatabaseTarget); + var ruleName = $"{DatabaseTarget}-{loggerPattern}-filters"; + _config.RemoveRuleByName(ruleName); + + var rule = new LoggingRule(loggerPattern, minLevel, maxLevel, target) { RuleName = ruleName, Final = final }; + + foreach (var filter in filters) + { + rule.Filters.Add(filter); + } + + _config.AddRule(rule); + + return this; + } + #endregion + public Configurer DisableMailRuleWhenInVisualStudio() { if (_isVisualStudioAttached())