C# Log4net以编程方式配置ADOAPENDER

C# Log4net以编程方式配置ADOAPENDER,c#,log4net,log4net-configuration,C#,Log4net,Log4net Configuration,我需要在现有的log4net配置中添加一个ado追加器 我需要通过代码添加它。但是,由于无法正确定义layout属性,我一直坚持添加message等常见字符串参数:在xml配置中,我们使用PatternLayout,但via code PatternLayout不是IRowLayout,因此我在以下代码中出错: public static void AddStringParameterToAppender(this log4net.Appender.AdoNetAppender appe

我需要在现有的log4net配置中添加一个ado追加器

我需要通过代码添加它。但是,由于无法正确定义layout属性,我一直坚持添加message等常见字符串参数:在xml配置中,我们使用PatternLayout,但via 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>

我终于找到了如何在
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);
    }
小字体,应该是“Layout2RawLayoutAdapter”(非行)。