7

我需要将 ado appender 添加到现有的 log4net 配置中。

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

1 回答 1

18

我终于找到了如何PatternLayoutIRawLayout.

为此,您必须使用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);
    }
于 2011-05-24T07:18:00.937 回答