繁体   English   中英

ASP.NET Core 2.0中的NLog无法记录到邮件

[英]NLog in ASP.NET Core 2.0 not logging to Mail

在我的ASP.NET Core应用程序中,我使用的是log4net,尽管出现了一些故障,但一切正常。 由于log4net开发似乎停滞并且它们似乎没有适合.NET Core开发的版本,因此我们现在转向NLog。 但是,尝试使Mail目标与NLog一起工作似乎是不可能的。 我能够使NLog记录到数据库和文件系统。 但不是邮件。

顺便说一句,我正在使用我们自己的公司smtp服务器来中继电子邮件。

首先,这是我对SmtpAppender的旧log4net配置(敏感的服务器信息当然是伪装的),并且它运行良好。

   <log4net>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="user@destination.com"/>
    <from value="service@source.com"/>
    <subject value="some text"/>
    <smtpHost value="smtp.source.com"/>
    <bufferSize value="1"/>
    <lossy value="true"/>
    <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="Error" />
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline"/>
    </layout>
</appender>
<root>
    <appender-ref ref="SmtpAppender" />
    <!--<appender-ref ref="AdoNetAppender"/>
    <appender-ref ref="RollingFileAppender" />-->
</root>

这是我针对相同设置的NLog配置。

    <targets>
    <target name="MailLogger" xsi:type="Mail"
            smtpServer="smt.source.com"
                    subject="NLog test"
            from="sombody@source.com"
            to="toaddress@destination.com"/>
    <target name="LogToFile" xsi:type="File"
            fileName="c:\\temp\\logs\\NLogLog.txt"
            encoding="utf-8"
            layout="[${longdate}][${machinename}][${level}] ${message} ${exception}" />
</targets>
<rules>
    <logger name="*" minlevel="Info" writeTo="LogToFile" enabled ="true"/>
    <logger name="*" minlevel="Error" writeTo="MailLogger" enabled ="false"/>
</rules>

我没有显示任何使用日志记录的代码,因为它适用于除邮件目标之外的所有目标。 因此,我很确定问题出在配置上。 这是我无法发送电子邮件日志时收到的日志。

Error Error sending mail. Exception: System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

尽管它说存在身份验证错误,但是当我在上述log4net配置中使用log4net时,一切正常。 我使用的是完全相同的smtp中继服务器以及“从”和“到”地址。 因此,显然NLog配置中缺少某些内容。

仅供参考,我确实尝试添加了可以通过我们的smtp服务器中继邮件的用户名和密码,但仍然给了我同样的错误。

有人可以告诉我我在这里想念什么吗? 谢谢。

我能够使我的Mail目标在NLog中工作。 但是我不确定这是否是一个好主意。 我也不确定为什么在没有类似配置的情况下log4net可以工作。 我在NLog Mail目标中添加了以下行:

skipCertificateValidation="true"

因此,现在整个目标看起来像这样:

<target name="RulesEngineLogMail" xsi:type="Mail"
            smtpServer="xxxxx.xxxxxx.com"
              subject="Rules Engine Log"
              skipCertificateValidation="true"
            layout="[${longdate}] - [${machinename}] - [${level}] - [${message}] - [${exception:format=toString}]"
            from="xxx@xxx.com"
            to="aaa@aaa.com"/>

如果有人可以澄清添加行以跳过证书验证的影响,那将是很好的。 除非我知道安全性,否则无法将以上配置投入生产。 我对log4net不需要任何类似的配置感到好奇。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM