log4net Mysql logging не работает в моем приложении.net 3.5

У меня есть приложение, в котором простая регистрация текстовых файлов работает нормально. Теперь мне также нужно войти в базу данных MySQL. Но ничего не произошло после моих записей в журнале кода. Моя конфигурация log4net

<?xml version="1.0" encoding="utf-8" ?>
<log4net>  
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <immediateFlush value="true" />
    <bufferSize value="1" />
    <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    <connectionString value="data source=localhost;initial catalog=mytestdb;User ID=root;Password=" />
    <commandText value="INSERT INTO system_log(thread,level,appname,message,action) VALUES (?thread, ?level, ?appname, ?message, ?action)" />   
    <parameter>
      <parameterName value="thread" />
      <dbType value="String" />
      <size value="100" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%t" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="level" />
      <dbType value="String" />
      <size value="10" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%p" />
      </layout>
    </parameter>
    <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="message" />
      <dbType value="String" />
      <size value="4000" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%m" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="action" />
      <dbType value="String" />
      <size value="45" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%5c{1}.%M" />
      </layout>
    </parameter>
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="DEBUG" />
      <levelMax value="FATAL" />
    </filter>
  </appender>
  <!--<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="..\\Logs.txt" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <rollingStyle value="Date" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="DEBUG" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} %10p %-5property{_App} %-5property{_Node} [%2t] %5c{1}.%M - %m%n" />
    </layout>
  </appender>-->
  <root>  
    <level value="ALL" />    
     <!--<appender-ref ref="RollingLogFileAppender" />-->
    <appender-ref ref="AdoNetAppender" />
  </root>  
</log4net>

1 ответ

Решение

В текущей конфигурации размер буфера был изначально установлен на 100. Поэтому я должен установить его на 0 или 1, чтобы log4net немедленно отправлял сообщение.

<bufferSize value="0" />

Второй проблемой было то, что я использовал commandparamter неправильно, я установил его

<commandText value="INSERT INTO system_log(thread_id,level,appname,message,action) VALUES (@threadParam,@levelParam,@appnameParam,@messageParam,@actionParam);" />

который работает

Другие вопросы по тегам