3

log4netを使用してSQLデータベースにJSON形式のデータを挿入しています。保存されていないカスタム プロパティを除いて、すべて問題ありません。

これは私の構成です:

<appender name="TGGADONetAppenderjson" type="log4net.Appender.ADONetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data,       Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="Data Source=LOANER-1122-HP\SQLEXPRESS;Initial Catalog=CAS-Dev;integrated security=false;persist security info=True;User Id=sa;Password=abinash12345;" />
      <commandText value="INSERT INTO Log ([Message],[AppName],[TransactionId]) VALUES
       (@message, @appName,@transactionId)" />

 <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json"></layout>
      </parameter>
<parameter>
        <parameterName value="@appName" />
        <dbType value="String" />
        <size value="2000" />
        <layout type="log4net.Layout.PatternLayout">
          <!--<conversionPattern value="%property{Environment}" />-->
          <conversionPattern value="APPNAME-LogTest" />
          <!--should be a fixed value-->
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@transactionId" />
        <dbType value="String" />
        <size value="2000" />
        <layout type="log4net.Layout.PatternLayout" >
          <conversionPattern value="%property{TransactionId}" />
        </layout>
      </parameter>
    </appender>

    <root>
      <level value="ALL" />
      <appender-ref ref="TGGADONetAppenderjson" />
    </root>

デバッグすると、カスタム プロパティ「TransactionId」の値がスレッドに挿入されていることがわかります。ただし、挿入は機能しません。TransactionId はメッセージに記録されず、TransactionId 列にも挿入されません。

NuGet の log4net json バージョン 1.2.13.29 を使用しています

4

1 に答える 1

1

SerializedLayout に入る構成がいくつかあります。プロパティに明示的に名前を付ける必要があります。次のようなものを試してください:

<layout type='log4net.Layout.SerializedLayout, log4net.Ext.Json'>
    <decorator type='log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json' />
    <default /> <!-- explicit default members -->
    <member value='TransactionId' /> <!-- explicit property reference -->
</layout> 

役立つ可能性のあるメンバーのテスト ケースを確認してください。

propertiesまたは、メンバーを追加して、すべてのプロパティをシリアル化します。

于 2016-03-23T03:21:10.903 に答える