39 Stimmen

Wie man NLog dazu bringt, in die Datenbank zu schreiben

Ich versuche, NLog dazu zu bringen, in meiner Datenbankprotokolltabelle zu protokollieren, aber ohne Erfolg. Ich bin sicher, dass meine Verbindungszeichenfolge korrekt ist, weil es die gleiche an anderer Stelle in meiner web.config verwendet wird. Das Schreiben in eine Datei funktioniert einwandfrei, also weiß ich, dass es nicht nur an NLog liegt, sondern dass ich etwas falsch mache. Unten ist meine NLog-Konfiguration:

<!-- 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>

66voto

slolife Punkte 18923

Versuchen Sie, das Folgende in Ihr nlog-Tag einzufügen:

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

Das könnte helfen, das Problem zu erkennen.

10 Stimmen

${longdate} war eine Zeichenkette, die ich in ein Datetime-Feld einfügen wollte. Das Ändern in ${date} brachte den gewünschten Erfolg.

0 Stimmen

Bitte beachten Sie, dass NLog 4.6+ Db-Typen im Datenbankziel unterstützt. Sie könnten also für ${date} , dbType=DbType.Date , ver nlog-project.org/2019/03/20/nlog-4-6-is-live.html

7voto

Sunny Milenov Punkte 21296

NLog ermöglicht die Protokollierung der Interna des Frameworks selbst.

Freigeben " Debug-Level für Ihre interne Protokollierung "für NLog und sehen Sie nach, was schief läuft.

0 Stimmen

Toter Link, aber ich fand dies hilfreich github.com/NLog/NLog/wiki/Interne Protokollierung

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X