关于log4net自定义字段写入不进数据库的问题

网上的教程上配置文件基本上都差不多

<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <logger name="Logger">
      <level value="All"/>
      <appender-ref ref="ADONetAppender"/>
    </logger>
    <!--<root>
            <level value="All" />
      <appender-ref ref="ADONetAppender" /> 
        </root>-->
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
      <!--BufferSize为缓冲区大小-->
      <param name="BufferSize" value="1"/>
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <connectionString value="database=***;server=.;User ID=sa;Password=***;"/>
      <commandText value="INSERT INTO SYS_Log ([LogTime],[Thread],[Level],[Logger],[Message],[UserID],[OperationID]) VALUES (@log_date, @thread, @log_level, @logger, @message,@UserID,@OperationID)"/>
      <parameter>
        <parameterName value="@log_date"/>
        <dbType value="DateTime"/>
        <layout type="log4net.Layout.RawTimeStampLayout"/>
      </parameter>
      <parameter>
        <parameterName value="@thread"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_level"/>
        <dbType value="String"/>
        <size value="50"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="4000"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@UserID" />
        <dbType value="string" />
        <size value="255" />
        <layout type="Common.Logger.CustomLayout">
          <conversionPattern value="%UserID" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@OperationID"/>
        <dbType value="string" />
        <size value="20" />
        <layout type="Common.Logger.CustomLayout">
          <conversionPattern value="%OperationID"/>
        </layout>
      </parameter>
    </appender>
  </log4net>
</configuration>

 

请注意我的最后一个字段,之前这个字段我是这样配置的

 <parameter>
        <parameterName value="@OperationID"/>
        <dbType value="Int" />
        <layout type="Common.Logger.CustomLayout">
          <conversionPattern value="%OperationID"/>
        </layout>
</parameter>

 因为我的这个ID在数据库中是int类型的,然后我在想log4net应该不会不支持int类型吧,然后我这里就这样配置了

然后一直就是插入不进去,直到我一个朋友跟我说把最后一个字段的类型改成string看看,我改了之后果断就好了有木有

虽然不知道是什么原因,但是问题总算是解决了。在这里记下这个问题,为以后有犯我这个错误的朋友做点贡献。


 

关于log4net自定义字段写入不进数据库的问题,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。