Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未读取Log4net Json自定义属性_Json_Log4net_Log4net Configuration_Log4net Appender - Fatal编程技术网

未读取Log4net Json自定义属性

未读取Log4net Json自定义属性,json,log4net,log4net-configuration,log4net-appender,Json,Log4net,Log4net Configuration,Log4net Appender,我使用log4net在sql数据库中插入JSON格式的数据。除未保存的自定义属性外,一切正常 这是我的配置: <appender name="TGGADONetAppenderjson" type="log4net.Appender.ADONetAppender"> <bufferSize value="1" /> <connectionType value="System.Data.SqlClient.SqlConnection, Syst

我使用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,在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
成员来序列化所有属性。

如果有帮助,这里是日志。{“date”:“2015-04-17T12:58:52.7092871-04:00”,“level”:“INFO”,“appname”:“LogginTest Console.vshost.exe”,“logger”:“METHODNAME-LogTest.Main”,“thread”:“6”,“ndc”:(null)”,“message”:“调用方法除以零.start”}它是否登录到文本文件中?不管答案是什么,您都可以尝试激活log4net程序集的内部调试:您好,我能够找到导致TransactionId未出现在数据库中的代码问题。然而,主要问题是transactionId不是json的paret。它作为一个独立的领域出现。我如何使json的这一部分?