我正在使用NLog v2 Beta来记录VB.NET .DLL,它创建并向第三方服务发送消息。我在记录到文件时完美地工作,但现在希望它也通过电子邮件向我发送它自动捕获的错误。以下是我的NLog.config文件的相关位:
<?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="papercut" xsi:type="BufferingWrapper" bufferSize="100">
<target xsi:type="PostFilteringWrapper" defaultFilter="level >= LogLevel.Debug">
<target xsi:type="Mail"
name="papercut"
subject="Your app has errors"
to="ToAddress@Domain.com"
from="FromAddress@Domain.com"
smtpServer="127.0.0.1"
smtpPort="25"
body={longdate}|{message} />
</target>
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="papercut" />
</rules>
</nlog>
默认情况下,它只会在电子邮件正文中列出已记录的邮件。我希望在此之前记录日期/时间,因此一直在玩body = part无效(它要么没有正确评估变量,要么崩溃NLog)。有人可以给我一个关于如何配置NLog来执行此操作的指针吗?
答案 0 :(得分:2)
似乎你在身体配置中缺少$,这可能是NLog崩溃的原因..
body = "${longdate}| ${message}"
有关邮件目标的更多信息
https://github.com/NLog/NLog/wiki/Mail-target
您也可以启用NLog错误本身的日志记录,如下所示。
<nlog
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="true"
internalLogFile="Nloglog.log"
internalLogLevel="Warn"
>
.....
</nlog>