首页> C#> log4net AdoNetAppender在数据库中插入“ Null”字符串,而不是null

我在.net 3.5应用程序上登录了log4net.日志正在插入数据库.我遇到的一个问题是,对于我未设置数据的数据库,它会插入“ NULL”而不是数据库null.
我的配置是

 <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <immediateFlush value="true" />
    <bufferSize value="0" />
    <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
    <connectionString value="data source=localhost;initial catalog=logging_db;User ID=root;Password=" />
    <commandText value="INSERT INTO system_log(appname, action,context_id)
                 VALUES (@appname, @action, @context_id);" />
    <parameter>
      <parameterName value="appname" />
      <dbType value="String" />
      <size value="10" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="My Web Service" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="action" />
      <dbType value="String" />
      <size value="45" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%5c{1}.%M" />
      </layout>
    </parameter>
  <parameter>
      <parameterName value="context_id" />
      <dbType value="String" />
      <size value="48" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%X{context_id}" />
      </layout>
    </parameter>
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="DEBUG" />
      <levelMax value="FATAL" />
    </filter>
  </appender>

在某些方法中,我在方法中将context_id设置为

log4net.LogicalThreadContext.Properties["context_id"] = "My context";

它在我提供的位置很好插入,但在我未设置的地方错误地插入了它.
我还检查了https://issues.apache.org/jira/browse/LOG4NET-28处的问题,但将其标记为已解决

解决方法:

您可以更改INSERT INTO语句以检查“ NULL”字符串并将其替换为DB空值,其想法是从here开始

所以它看起来像这样:

INSERT INTO system_log(appname, action,context_id) VALUES (@appname, @action, CASE WHEN @context_id = 'NULL' THEN NULL ELSE @context_id END );"

更新

要改用存储过程,只需替换如下语句:

exec YourStoredProcedure @appname, @action, @context_id
上一篇:MS UnitTestFramework检索和记录异常C#


下一篇:ELK日志分析系统的搭建