配置NLog电子邮件消息正文输出

时间:2011-04-20 22:20:41

标签: nlog

我正在使用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来执行此操作的指针吗?

1 个答案:

答案 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>