C# 如何使用AdoNetAppender在log4net中记录字节[]数据

C# 如何使用AdoNetAppender在log4net中记录字节[]数据,c#,log4net,adonetappender,C#,Log4net,Adonetappender,我想使用log4net的AdoNetAppender以[varbinary](max)SQL表列的形式记录一个gzip压缩字符串,该字符串将采用二进制Byte[]格式 我的问题是: 1) 这可能吗?如果是这样,我需要在下面的配置文件中将什么dbType用作参数: <parameter> <parameterName value="@Data" /> <dbType value="String" /> <size value=

我想使用log4net的
AdoNetAppender
[varbinary](max)
SQL表列的形式记录一个gzip压缩字符串,该字符串将采用二进制
Byte[]
格式

我的问题是:

1) 这可能吗?如果是这样,我需要在下面的配置文件中将什么
dbType
用作参数:

   <parameter>
    <parameterName value="@Data" />
    <dbType value="String" />
    <size value="2147483647" />
    <layout type="log4net.Layout.RawPropertyLayout">
      <key value="Data" />
    </layout>
  </parameter


我认为记录二进制字节[]的最佳方法是将其转换为base64字符串。无法将Byte[]类型作为值传递给log4net日志记录方法

我认为记录二进制字节[]的最佳方法是将其转换为base64字符串。无法将Byte[]类型作为值传递给log4net日志记录方法

您可以将字符串转换为CommandText中的字节[],如下所示:

<commandText value="INSERT INTO [LogServer]
    ([Date], [Logger], [message], [Exception], [BinaryMessage], [BinaryException]) 
    VALUES
    (@log_date, @logger, @message, @exception, cast(@message as varbinary(max)), cast(@exception as varbinary(max)) )"/>

您可以将字符串转换为CommandText中的字节[],如下所示:

<commandText value="INSERT INTO [LogServer]
    ([Date], [Logger], [message], [Exception], [BinaryMessage], [BinaryException]) 
    VALUES
    (@log_date, @logger, @message, @exception, cast(@message as varbinary(max)), cast(@exception as varbinary(max)) )"/>