web-dev-qa-db-ja.com

NLogをデータベースに書き込む方法

NLogをデータベースログテーブルに記録しようとしていますが、役に立ちません。接続文字列は、web.configの他の場所で使用されているものと同じであるため、正しいと思います。ファイルへの書き込みは正常に機能するので、それがNLogだけでなく、私が間違っていることに違いないことがわかっています。以下は私のNLog設定です:

<!-- NLOG CONFIGURATION -->
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="file" xsi:type="File" fileName="${basedir}/logs/Log ${shortdate}.txt" layout="${longdate} ${callsite} ${level}: ${message} ${exception:format=Message,StackTrace} ${stacktrace}" />
      <target type="Database" name="database" connectionstring="MyConnectionString">
        <commandText>
          insert into MyLog ([CreateDate], [Origin], [LogLevel], [Message], [Exception], [StackTrace]) values (@createDate, @Origin, @logLevel, @message, @exception, @stackTrace);
        </commandText>
        <parameter name="@createDate" layout="${longdate}"/>
        <parameter name="@Origin" layout="${callsite}"/>
        <parameter name="@logLevel" layout="${level}"/>
        <parameter name="@message" layout="${message}"/>
        <parameter name="@exception" layout="${exception:format=Message,StackTrace}"/>
        <parameter name="@stackTrace" layout="${stacktrace}"/>
      </target>
    </targets>
    <rules>
      <logger name="*" writeTo="file"/>
      <logger name="*" appendTo="database"/>
      <!--<logger name="*" writeTo="mail" minlevel="Error"/>-->
    </rules>
  </nlog>
40
Ciaran O'Neill

以下をnlogタグに入れてみてください。

<nlog throwExceptions="true" internalLogFile="c:\nlog.txt" internalLogLevel="Debug" />

それは問題が何であるかを決定するのに役立つかもしれません

67
slolife

NLogでは、フレームワーク自体の内部をログに記録できます。

NLogの「 内部ログのデバッグレベル 」を有効にして、何が問題になっているのかを確認します。

7
Sunny Milenov