1

単純なテキスト ファイルのログ記録が正常に機能するアプリケーションがあります。また、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>
4

1 に答える 1

1

現在の構成では、buffersize は最初は 100 に設定されていました。したがって、log4net がすぐにメッセージを送信できるように、0 または 1 に設定する必要があります。

<bufferSize value="0" />

2番目の問題は、commandparamterを間違った方法で使用していたことでした。

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

動作する

于 2015-04-09T09:43:43.700 に答える