运行时使用NLog忽略日志条目的正确方法

问题描述 投票:0回答:1

我在运行时创建一个

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
    });            
c# nlog
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.