【问题标题】:Get the layout from the target in NLog从 NLog 中的目标获取布局
【发布时间】:2015-06-11 05:25:20
【问题描述】:

我有一个 NLog 配置文件。

LoggingConfiguration nLogLoggingConfiguration;

然后

foreach (var target in nLogLoggingConfiguration.AllTargets)
        {

我想从目标中获取布局,它似乎在内存中。当我在调试时将鼠标悬停在它上面时。我发现:

我想要的是

 ${message}|${exception:format=tostring}|${stacktrace}

【问题讨论】:

    标签: c# nlog


    【解决方案1】:

    并不是所有的目标都有布局,所以你必须得到继承自TargetWithLayout的项目,然后你可以在布局对象上调用ToString。一个例子:

    foreach (var target in nLogLoggingConfiguration.AllTargets.OfType<TargetWithLayout>())
    {
        string layoutString = target.Layout.ToString();
        Console.WriteLine(layoutString);
    }
    

    【讨论】:

    • 后续问题,如果目标是TargetWithLayout 的类型。我们可以将规则添加为var loggerRule = new LoggingRule(ruleName, LogLevel.Fatal, target);吗?
    • 我的意思是var filter = new ConditionBasedFilter(); filter.Action = FilterResult.Log; filter.Condition = "(level == LogLevel.Fatal)"; var loggerRule = new LoggingRule(ruleName, LogLevel.Fatal, target); loggerRule.Filters.Add(filter);
    • @Love 我想是的。您只需将其添加到 LoggingConfiguration 的 LoggerRules 集合中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2011-07-07
    • 1970-01-01
    相关资源
    最近更新 更多