#c# #log4net #log4net-configuration
#c# #log4net #log4net-конфигурация
Вопрос:
Мне нужно добавить приложение ado в существующую конфигурацию log4net.
Мне нужно добавить его с помощью кода. Однако я застрял на добавлении общих строковых параметров, таких как message, поскольку я не могу правильно определить свойство layout: В конфигурации xml мы используем PatternLayout, но через code PatternLayout не является IRowLayout, поэтому у меня ошибка со следующим кодом :
public static void AddStringParameterToAppender(this log4net.Appender.AdoNetAppender appender, string paramName, int size, string conversionPattern)
{
log4net.Appender.AdoNetAppenderParameter param = new log4net.Appender.AdoNetAppenderParameter();
param.ParameterName = paramName;
param.DbType = System.Data.DbType.String;
param.Size = size;
param.Layout = new log4net.Layout.PatternLayout(conversionPattern);
appender.AddParameter(param);
}
Кто-нибудь знает, как добавить строковый параметр в код, аналогичный следующему образцу xml :
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
Ответ №1:
Я, наконец, нашел, как преобразовать PatternLayout
в IRawLayout
.
Для этого вы должны использовать log4net.Layout.Layout2RawLayoutAdapter
:
public static void AddStringParameterToAppender(this log4net.Appender.AdoNetAppender appender, string paramName, int size, string conversionPattern)
{
log4net.Appender.AdoNetAppenderParameter param = new log4net.Appender.AdoNetAppenderParameter();
param.ParameterName = paramName;
param.DbType = System.Data.DbType.String;
param.Size = size;
param.Layout = new log4net.Layout.Layout2RawLayoutAdapter(new log4net.Layout.PatternLayout(conversionPattern));
appender.AddParameter(param);
}
Комментарии:
1. Небольшая опечатка, это должно быть «Layout2RawLayoutAdapter» (не Строка ).