40 votes

Comment obtenir que NLog écrive dans une base de données

J'essaie de faire en sorte que NLog se connecte à la table de journalisation de ma base de données, mais en vain. Je suis sûr que ma chaîne de connexion est correcte car elle est identique à celle utilisée ailleurs dans web.config. Ecrire dans un fichier fonctionne bien, donc je sais que ce n'est pas seulement NLog, mais que c'est quelque chose que je fais mal. Ci-dessous ma configuration 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>
 

67voto

slolife Points 6528

Essayez de mettre ce qui suit dans votre balise nlog:

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

Cela pourrait aider à déterminer quel est le problème

7voto

Sunny Milenov Points 10978

NLog permet de journaliser les éléments internes du framework lui-même.

Activez " niveau de débogage pour votre journalisation interne " pour NLog et voyez ce qui ne va pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X