2009-06-17 10 views
39

J'essaye d'obtenir NLog pour se connecter à ma table de journal de base de données mais en vain. Je suis sûr que ma chaîne de connexion est correcte car c'est la même chose utilisée ailleurs dans mon web.config. Ecrire dans un fichier fonctionne bien, donc je sais que ce n'est pas seulement NLog, mais ça doit être quelque chose que je fais mal. Ci-dessous est ma configuration NLog:Comment obtenir NLog à écrire à la base de données

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

Répondre

66

Essayez de mettre les éléments suivants dans votre balise nlog:

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

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

+10

$ {longdate} était une chaîne que j'essayais d'insérer dans un champ datetime. Le changer en $ {date} a fait l'affaire. –

6

NLog permet d'enregistrer les composants internes de l'infrastructure elle-même.

Activer "debug level for your internal logging" pour NLog et voir ce qui ne va pas.

+0

lien mort, mais je l'ai trouvé cela utile https://github.com/NLog/NLog/ wiki/Internal-Logging – Fuzzybear

Questions connexes