J'essaie d'obtenir que NLog écrive dans une base de données. Cependant, avec mon code actuel, une exception est levée lorsque je tente de déboguer. L'exception est la suivante: Le type initializer de 'NotifyIcon.Program' a émis une exception.
le code de mon fichier de configuration NLog est ci-dessous, car cela semble être à l'origine du problème car c'est le seul code que j'ai modifié.
<?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-02\SQLEXPRESS;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 =]
Vous semblez manquer les paramètres à insérer.
Voir les exemples à http://justinpdavis.blogspot.com/2010/04/logging-to-database-with-nlog.html
La page Web nLog n'indique pas très clairement que cela est nécessaire, mais si vous plissez les yeux et que vous lisez https://github.com/nlog/NLog/wiki/Database-target , vous devriez constater qu'ils sont requis.
Il semble que votre chaîne d'insertion n'est pas dans le bon format? Il vous manque () autour de 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 d'attributs que vous n'avez 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? :)