Estoy intentando que NLog inicie sesión en la tabla de registro de la base de datos, pero fue en vano. Estoy seguro de que mi cadena de conexión es correcta porque es la misma que en mi sitio web.config. Escribir en un archivo funciona bien, así que sé que no es solo NLog, sino algo que estoy haciendo mal. Debajo está mi configuración de NLog:Cómo hacer que NLog escriba en la base de datos
<!-- 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>
$ {longdate} era una cadena que estaba intentando insertar en un campo de fecha y hora. Cambiarlo a $ {date} fue el truco. –