带过滤器的 NLOG 电子邮件日志未按预期工作

问题描述 投票:0回答:1

使用 ASP.NET 4.6.2、NLog 版本 5.1.2,当某些事件属性设置为布尔值 true 时,尝试使用 Mail 目标记录事件。这是行不通的。但在我看来它确实可以在不同的应用程序中工作。其他邮件目标可以在同一应用程序中工作。

目标配置:

<target name="MyEmailMessage" xsi:type="Mail"
    enableSsl="true"
    useSystemNetMailSettings="true"
    to="${event-properties:LookupEmailTo}"
    from="${appsetting:name=NLogEmailFrom}"
    subject="${event-properties:Subject}"
    html="true"
    addNewLines="true"
    replaceNewlineWithBrTagInHtml="true"
    body="${message}" />

记录器配置:

<logger name="WebApp.Controllers.MyController" minlevel="Trace" writeTo="MyEmailMessage">
  <filters defaultAction="Ignore">
    <when condition="'${event-properties:SendEmail}' == true" action="Log"/>
  </filters>
</logger>

控制器操作中的 C# 代码:

string body = $"some formatted string";

Log.WithProperty("LookupEmailTo", string.Join(",", emails.Distinct()))
    .WithProperty("Subject", Resources.EmailSubject)
    .WithProperty("SendEmail", true).Info(body);

我有另一个邮件目标,在同一调用期间在同一控制器操作中使用 Log.Error() 成功运行,但没有过滤器。

“好”目标:

<target name="EmailMessage" xsi:type="Mail"
        useSystemNetMailSettings="true"
        to="${appsetting:name=NLogEmailTo}"
        from="${appsetting:name=NLogEmailFrom}"
        subject="${appsetting:name=AppEnvironment} ${appsetting:name=AppName} ${level} (${machinename})"
        html="true"
        addNewLines="true"
        replaceNewlineWithBrTagInHtml="true"
        body="${message}${newline}${newline}Location: ${callsite}${newline}${newline}${exception}" />

“好”记录器:

<logger name="*" minlevel="Error" writeTo="EmailMessage" />

“好”C# 调用:

Log.Error(ex, "Error calling {objectId}", objId);

我在 NLOG.config 和日志中启用了内部日志记录 告诉我有关错误电子邮件日志的各种详细信息。但当我调用控制器操作时,它没有提及其他电子邮件日志。

asp.net-mvc configuration nlog
1个回答
0
投票

我将 NLog 的库更新到以下版本:

  • NLog 5.2.4
  • NLog.数据库5.2.4
  • NLog.MSMQ 5.3.0
  • NLog.Schema 5.2.4
  • NLog.Web 5.3.4

初步测试表明它现在正在工作。将在部署的测试中查看它的进展情况。

© www.soinside.com 2019 - 2024. All rights reserved.