Я использую 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 имеет значение = "Транзакция"
Но, похоже, оно не работает. Пожалуйста, дайте мне знать, что мне нужно исправить
PS
Я даже попробовал следовать
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>