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 =]
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.
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) "
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? :)