NLog позволяет вам войти в несколько целей через файл конфигурации. Не забудьте установить для ignoreFailures значение true, чтобы гарантировать, что любые ошибки при установке / удалении игнорируются:
<?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">
<targets>
<target name="logfile" xsi:type="File" />
<target name="db" xsi:type="Database" />
</targets>
<rules>
<logger name="*" levels="Info" writeTo="logfile,db" />
</rules>
</nlog>
См. цель базы данных в документации NLog для получения дополнительной информации
Редактировать: Вы также можете создать собственную цель для достижения этого в коде:
using NLog;
using NLog.Targets;
namespace MyNamespace
{
[Target("MyFirst")]
public sealed class MyFirstTarget: TargetWithLayout
{
public MyFirstTarget()
{
this.Host = "localhost";
}
[Required]
public string Host { get; set; }
protected override void Write(LogEventInfo logEvent)
{
string logMessage = this.Layout.Render(logEvent);
SendTheMessageToRemoteHost(this.Host, logMessage);
}
private void SendTheMessageToRemoteHost(string host, string message)
{
// Detect your database state here or do something else with the error.
}
}
}
и используйте его с:
<nlog>
<extensions>
<add assembly="MyAssembly"/>
</extensions>
<targets>
<target name="a1" type="MyFirst" host="localhost"/>
</targets>
<rules>
<logger name="*" minLevel="Info" appendTo="a1"/>
</rules>
</nlog>
Подробнее см. на этой странице .