【发布时间】:2020-01-15 12:38:38
【问题描述】:
我使用 ADO.NET appender 和 MySQL 作为后端数据库
我在附加程序设置中添加了以下内容
<parameter>
<parameterName value="_context" />
<dbType value="String" />
<size value="25" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="Context" />
</layout>
</parameter>
<filter type="log4net.Filter.PropertyFilter">
<key value="Context" />
<stringToMatch value="Transaction" />
<acceptOnMatch value="false" />
</filter>
我正在做的是记录大量场景。但是当 Context Property 的值为 ="Transaction"
时,我想跳过转到 DB 命令的日志但它似乎不起作用。 请让我知道我需要更正的地方
附言
我什至尝试过关注
public class CustomFilter : FilterSkeleton
{
private readonly IList<IFilter> filters = new List<IFilter>();
public override FilterDecision Decide(LoggingEvent loggingEvent)
{
if (loggingEvent == null)
throw new ArgumentNullException("loggingEvent");
if (filters.All(x => x.Decide(loggingEvent) != FilterDecision.Accept))
{
return FilterDecision.Neutral;
}
// All conditions are true
if (AcceptOnMatch)
return FilterDecision.Accept;
else
return FilterDecision.Deny;
}
public IFilter Filter
{
set { filters.Add(value); }
}
public bool AcceptOnMatch { get; set; }
}
与
<filter type="MyNameSpace.CustomFilter, MyAssembly">
<filter type="log4net.Filter.PropertyFilter">
<key value="Context" />
<stringToMatch value="Transaction" />
<acceptOnMatch value="false" />
</filter>
</filter>
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
【问题讨论】:
标签: c# asp.net-core .net-core log4net