NLog 不包含过滤器似乎不起作用
NLog not contains filter doesn't seem to work
我正在使用 NLog 4.6.8 并具有以下简单的 NLog.config 和 Program.cs
NLog.config
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="consoleLayout" value="${longdate} [${threadid}] ${logger} ${uppercase:${level}} ${message} ${exception:format=tostring}"/>
<targets>
<target type="Console" name="c" layout="${consoleLayout}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="c">
<when condition="not contains('${message}','XXX')" action="Ignore"/>
</logger>
</rules>
</nlog>
Program.cs
using System;
namespace ConsoleApp1
{
public class Program
{
private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public static void Main(string[] args)
{
logger.Debug("Some dd message");
logger.Info("Some ii message");
logger.Debug("XXX Some dd message");
logger.Info("XXX Some ii message");
Console.ReadLine();
}
}
}
我希望最后两行只出现在我的控制台日志中,而不是前两行,但这是我得到的:
2020-03-17 12:56:31.3767 [1] ConsoleApp1.Program DEBUG Some dd message
2020-03-17 12:56:31.4046 [1] ConsoleApp1.Program INFO Some ii message
2020-03-17 12:56:31.4076 [1] ConsoleApp1.Program DEBUG XXX Some dd message
2020-03-17 12:56:31.4076 [1] ConsoleApp1.Program INFO XXX Some ii message
这看起来很简单,但它不起作用,我可能遗漏了一些愚蠢的东西。
请帮忙。
认为你需要这样写(包括过滤器)
<rules>
<logger name="*" minlevel="Debug" writeTo="c">
<filters defaultAction="Ignore">
<when condition="contains('${message}','XXX')" action="Log"/>
</filters>
</logger>
</rules>
我正在使用 NLog 4.6.8 并具有以下简单的 NLog.config 和 Program.cs
NLog.config
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="consoleLayout" value="${longdate} [${threadid}] ${logger} ${uppercase:${level}} ${message} ${exception:format=tostring}"/>
<targets>
<target type="Console" name="c" layout="${consoleLayout}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="c">
<when condition="not contains('${message}','XXX')" action="Ignore"/>
</logger>
</rules>
</nlog>
Program.cs
using System;
namespace ConsoleApp1
{
public class Program
{
private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public static void Main(string[] args)
{
logger.Debug("Some dd message");
logger.Info("Some ii message");
logger.Debug("XXX Some dd message");
logger.Info("XXX Some ii message");
Console.ReadLine();
}
}
}
我希望最后两行只出现在我的控制台日志中,而不是前两行,但这是我得到的:
2020-03-17 12:56:31.3767 [1] ConsoleApp1.Program DEBUG Some dd message
2020-03-17 12:56:31.4046 [1] ConsoleApp1.Program INFO Some ii message
2020-03-17 12:56:31.4076 [1] ConsoleApp1.Program DEBUG XXX Some dd message
2020-03-17 12:56:31.4076 [1] ConsoleApp1.Program INFO XXX Some ii message
这看起来很简单,但它不起作用,我可能遗漏了一些愚蠢的东西。 请帮忙。
认为你需要这样写(包括过滤器)
<rules>
<logger name="*" minlevel="Debug" writeTo="c">
<filters defaultAction="Ignore">
<when condition="contains('${message}','XXX')" action="Log"/>
</filters>
</logger>
</rules>