Comment configurer NLog pour écrire dans une base de données?

J'essaie D'obtenir que NLog écrive dans une base de données, mais avec mon code actuel, il lève une exception lorsque je tente de déboguer, l'exception est: l'initialiseur de type pour ' NotifyIcon.Programme ' jeté une exception.

Mon code de fichier de configuration NLog est ci-dessous, car cela semble causer le problème car c'est le seul code que j'ai changé.

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">

  <!-- 
  See http://nlog-project.org/wiki/Configuration_file 
  for information on customizing logging rules and outputs.
   -->
  <targets>
    <!-- add your targets here -->

    <target name="database" xsi:type="Database" />
    <target xsi:type="Database"
          name="String"
          dbUserName="Layout"
          dbProvider="sqlserver"
          useTransactions="false"
          connectionStringName="String"
          connectionString="Data Source=AC-02SQLEXPRESS;Initial Catalog=master;Integrated Security=True"
          keepConnection="true"
          dbDatabase="Layout"
          dbPassword="Layout"
          dbHost="Layout"
          installConnectionString="Layout"
          commandText="INSERT INTO Logs (Machine_Name, Username, Logon_Time, Screensaver_On, Screensaver_Off, Logoff_Time, Program_Start) Values @MachineName, @Username, @LogonTime, @Screensaver_On, @Screensaver_Off, @LogoffTime, @ProgramStart "/>

  </targets>

  <rules>

    <logger name="*" minlevel="Trace" writeTo="database" />

  </rules>
</nlog>

Toute aide serait grandement appréciée =]

21
demandé sur Julian 2013-06-19 14:05:34

3 réponses

Vous semblez manquer les paramètres qui doivent être insérés.

Voir les exemples à http://justinpdavis.blogspot.com/2010/04/logging-to-database-with-nlog.html

La page Web de nLog n'indique pas très clairement que ceux-ci sont nécessaires, mais si vous plissez les yeux et lisez https://github.com/nlog/NLog/wiki/Database-target vous devriez trouver qu'ils sont nécessaires.

12
répondu Brad Bruce 2013-06-19 19:19:27

Il semble que votre chaîne d'insertion n'est pas dans le bon format? Il vous manque () dans la liste des paramètres.

commandText="INSERT INTO Logs (Machine_Name, Username, Logon_Time, Screensaver_On, Screensaver_Off, Logoff_Time, Program_Start) Values (@MachineName, @Username, @LogonTime, @Screensaver_On, @Screensaver_Off, @LogoffTime, @ProgramStart) "
1
répondu automatic 2013-06-19 11:36:10

U a également écrit 2 cibles. Et aussi beaucoup de attributs que u n'a pas besoin de définir. Devrait juste être:

<target name="DbLog" xsi:type="Database" connectionString="YourConStr" 
        commandText="insert into [blablablabal] (Col1) values (@val1)">
  <parameter name="@val1" layout="${level}" /></target>

Quelque Chose comme ça. Facile non? :)

0
répondu WtFudgE 2016-10-14 12:43:13