我在运行时创建一个
MongoTarget
到托管生产数据库的服务器。在运行时忽略不需要的日志条目的正确方法是什么?我目前正在创建一个 MemoryTarget
并创建一个规则,将不需要的日志条目发送到带有 Final = true
的规则,这可以工作,但感觉很老套。我应该做什么?
var memoryTarget = new MemoryTarget
{
Name = "memory",
MaxLogsCount = 100
};
var rule = new LoggingRule("Microsoft.*", LogLevel.Trace, LogLevel.Info, memoryTarget) { Final = true };
config.LoggingRules.Add(rule);
我尝试添加 ConditionBasedFilter,但这似乎忽略了一切。
rule.Filters.Add(new ConditionBasedFilter()
{
Condition = "starts-with(logger, 'Microsoft')",
Action = FilterResult.Ignore
});
NLog v5 允许您执行此操作:
LogManager.Setup().LoadConfiguration(c =>
{
c.ForLogger("Microsoft.*").WriteToNil(LogLevel.Warn); // FinalMinLevel
c.ForLogger().FilterMinLevel(LogLevel.Info).WriteTo(mongoTarget);
});
另请参阅:https://github.com/NLog/NLog/wiki/Fluent-Configuration-API
另请参阅:https://github.com/NLog/NLog/wiki/Logging-Rules-FinalMinLevel