C# 如何以编程方式添加日志过滤器?

C# 如何以编程方式添加日志过滤器?,c#,nlog,C#,Nlog,我想在NLog中添加规则。规则是: <rules> <logger name="*" writeTo="file"> <filters> <when condition="length(message) > 100" action="Ignore" /> <when condition="equals('${logger}','MyApps.SomeClass')" action="Ignore

我想在NLog中添加规则。规则是:

 <rules>
<logger name="*" writeTo="file">
    <filters>
        <when condition="length(message) > 100" action="Ignore" />
        <when condition="equals('${logger}','MyApps.SomeClass')" action="Ignore" />
        <when condition="(level >= LogLevel.Debug and contains(message,'PleaseDontLogThis')) or level==LogLevel.Warn" action="Ignore" />
        <when condition="not starts-with('${message}','PleaseLogThis')" action="Ignore" />
    </filters>
</logger>


现在我想用C代码实现它。我还没有在网上找到示例代码。

我想看看NLog的文档。虽然它没有具体引用过滤器,但似乎以编程方式实现这一点的方法是使用
LoggingRules
控制日志消息的处理方式

编辑

正如我所说,配置API是实现这一点的方法。此示例将以编程方式复制以下配置:

配置

<targets>            
    <target name="console" type="Console" />
</targets>
<rules>
    <logger name="*" minlevel="Debug" writeTo="console">
        <filters>
            <when condition="not starts-with('${message})', 'PleaseLogThis')" action="Ignore" />
        </filters>
    </logger>
</rules>


否决票没问题。请给我一个理由。在C#中实现这一点并不容易,因为NLOG ODEN没有提供在C#中添加过滤器的文档。它没有过滤器,但我需要它。链接是无助的。它不是那么无助,我可以用它很容易地找到一个工作示例。查看我的编辑。为什么我的答案未选中?我在
filter.Action=FilterResult.Log。我的代码喜欢
filter.Condition=”(水平)爱你使它很难帮助你。我的答案正确地演示了如何以编程方式添加过滤器。如果你在你的用法中得到了一个异常,那么可能是你做错了。现在看不到你在做什么,我没有办法帮助你。你应该考虑用更新来编辑你的问题。并解释它是如何导致异常的。
// Create the filter
var filter = new ConditionBasedFilter();            
filter.Condition = "not starts-with('${message}','PleaseLogThis')";
filter.Action = FilterResult.Ignore;

// Create the rule to apply the filter to
var consoleTarget = new ColoredConsoleTarget();
var rule = new LoggingRule("*", LogLevel.Debug, consoleTarget);
rule.Filters.Add(filter);

// Create the config to apply the rule to
var config = new LoggingConfiguration();
config.LoggingRules.Add(rule);

// Update the log manager with the programmatic config
LogManager.Configuration = config;

// Test Your Logging
var log = LogManager.GetCurrentClassLogger();

log.Debug("Test");
log.Debug("Filter");
log.Debug("PleaseLogThis");

Console.ReadLine();