日志框架NLog之将日志发送到邮件

背景

NLog可以将日志输出到不同的媒介上,邮件是其中一个,通过邮件可以让我们第一时间收到信息。使用SMTP协议通过电子邮件发送日志消息。与FallbackGroup Target很好地结合在一起,以创建具有多个SMTP主机的后备。

配置语法

<targets>
  <target xsi:type="Mail"
          name="String"
          header="Layout"
          footer="Layout"
          layout="Layout"
          html="Boolean"
          addNewLines="Boolean"
          replaceNewlineWithBrTagInHtml="Boolean"
          encoding="Encoding"
          subject="Layout"
          to="Layout"
          bcc="Layout"
          cc="Layout"
          from="Layout"
          body="Layout"
          smtpUserName="Layout"
          enableSsl="Boolean"
          secureSocketOption="None|Auto|SslOnConnect|StartTls|StartTlsWhenAvailable"*
          smtpPassword="Layout"
          smtpAuthentication="Enum"
          smtpServer="Layout"
          smtpPort="Integer"
          useSystemNetMailSettings="Boolean"
          deliveryMethod="Enum"
          pickupDirectoryLocation="String"
          timeout="Integer"
          skipCertificateValidation="Boolean"
          priority="Layout"
 />
</targets>

参数

常规选项

  • 名称-目标名称。

  • 布局选项

  • 标头-标头。布局

  • 页脚-页脚。布局

  • 布局-要渲染的文本。需要布局。默认值:${message}${newline}。与身体属性相同

  • html-指示是否以HTML而不是纯文本形式发送消息。布尔默认值:false

  • addNewLines-指示是否在日志条目之间添加新行。布尔型

  • replaceNewlineWithBrTagInHtml -指示是否在身体换行字符应改为<br/>标签。布尔默认值:false

  • 编码-用于发送电子邮件的编码。编码默认值:UTF-8讯息选项

  • 主题-邮件主题。需要布局。默认值:来自$ {machinename}上NLog的消息

  • 到-收件人的电子邮件地址,用分号分隔(例如john@domain.com;jane@domain.com)。布局。从NLog 4.0开始,不再需要此字段,但应定义To,BCC或CC,否则将引发异常。

  • 密件抄送-用分号分隔的密件抄送电子邮件地址(例如john@domain.com;jane@domain.com)。布局

  • cc-用分号分隔的CC电子邮件地址(例如john@domain.com;jane@domain.com)。布局

  • 来自-发件人的电子邮件地址(例如joe@domain.com)。需要布局。

  • 体-同布局属性。邮件消息正文(对于一封邮件中发送的每条日志消息重复)。布局默认值:${message}${newline}

  • 优先级-邮件优先级。

    • 当使用不带NLog.MailKit软件包的NLog时,请使用System.Net.Mail.MailPriority。Low,Normal,High。

    • 使用版本最高为v3.1的Nlog + NLog.MailKit版本时,有效值为MimeKit.MessagePriority。NonUrgent,Normal,Urgent

    • NLog.MailKit V3.2和上述接受NonUrgent / Low,Normal,Urgent / High为了向后兼容MTP选项

  • smtpUserName-用于连接到SMTP服务器的用户名(在SmtpAuthentication设置为“基本”时使用)。布局

  • enableSsl-指示在与SMTP服务器通信时是否应使用SSL(安全套接字层)。布尔值默认值:False。注意:端口465不适用于SSL。见问题1226

  • secureSocketOption-仅在NLog.Mailkit 2.1+中。提供一种指定SSL和/或TLS加密的方式。默认为StartTlsWhenAvailable。选项:无,自动,SslOnConnect,StartTls和StartTlsWhenAvailable。如果enableSsl设置为true,将使用SslOnConnect

  • smtpPassword-用于针对SMTP服务器进行身份验证的密码(在SmtpAuthentication设置为“基本”时使用)。布局

  • smtpAuthentication -SMTP身份验证模式。默认值:无
    可能的值:

    • 基本-基本-用户名和密码。

    • 无-无身份验证。

    • Ntlm -NTLM身份验证。

  • smtpServer-用于发送的SMTP服务器。需要布局。

  • smtpPort -SMTP服务器正在侦听的端口号。整数缺省值:25。注意:端口465不支持SSL。见问题1226

  • useSystemNetMailSettings-从system.net/mailSettings强制使用smtp配置。布尔默认值:False

  • 超时-表示SMTP客户端超时(以毫秒为单位)。整数默认值:10000(10秒)

  • PickupDirectoryLocation-获取或设置应用程序用来保存要由本地SMTP服务器处理的邮件的文件夹(在NLog 4.2中引入)。

  • deliveryMethod-指定将如何处理传出电子邮件(在NLog 4.2中引入)。默认值:网络可能的值:

    • 网络-电子邮件通过网络发送到SMTP服务器。

    • PickupDirectoryFromIis-电子邮件被复制到本地Internet信息服务(IIS)使用的提取目录中以进行传递。

    • SpecifiedPickupDirectory-将电子邮件复制到PickupDirectoryLocation属性指定的目录中,以供外部应用程序传递。

  • skipCertificateValidation-仅适用于NLog.MailKit。在NLog.MailKit 1.1中引入-跳过SSL认证检查

实现方式

1、vs添加引用NLog.MailKit

<PackageReference Include="NLog.MailKit" Version="3.0.0" />

2、配置nlog

<nlog>
  <extensions>
    <add assembly="NLog.MailKit"/>
  </extensions>
  ...

3、config配置邮箱信息

<system.net>
  <mailSettings>
    <smtp from="mail@domain.com" deliveryMethod="SpecifiedPickupDirectory">
      <network host="localhost" port="25"/>
      <specifiedPickupDirectory pickupDirectoryLocation="C:/Temp/Email"/>
    </smtp>
  </mailSettings>
</system.net>

4、配置日志参数

<target xsi:type="FallbackGroup"
        name="mail"
        returnToFirstOnSuccess="true">
    <target xsi:type="Mail"
            name="mailserver1"
            subject="Layout"
            to="Layout"
            from="Layout"
            smtpServer="mx1.example.com"
            smtpPort="Integer"
            layout="Layout" />
    <target xsi:type="Mail"
            name="mailserver2"
            subject="Layout"
            to="Layout"
            from="Layout"
            smtpServer="mx2.example.com"
            smtpPort="Integer"
            layout="Layout" />

</target>

最后就可以收到日志邮件啦。

参考地址

https://github.com/nlog/NLog/wiki/Mail-target

(0)

相关推荐

  • UIElement.InvalidateVisual

    Invalidates the rendering of the element, and forces a complete new layout pass. OnRender(DrawingCon ...

  • 记一次 .NET医院公众号程序 线程CPU双高分析

    dotNET跨平台 今天 以下文章来源于一线码农聊技术 ,作者一线码农聊技术 一:背景 1. 讲故事 上周四有位朋友加wx咨询他的程序出现 CPU + 线程 双高的情况,希望我能帮忙排查下,如下图: ...

  • CentOS7安装MinIO教程,C#使用MinIO看这一篇就够了(WPF)

    MinIO的详细介绍可以参考官网(https://min.io/product/overview). 简单来说它是一个实现了AWS S3标准的100%开源的,可商用的( Apache V2 licen ...

  • .Net Core Send Email

    .Net Core Send Email

  • 最牛逼的日志框架,性能无敌,横扫所有对手。。

    Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了.不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新:logback的兄弟 slf ...

  • 纠结哇!日志框架选型,Logback 还是 Log4j2?

    正文如下: 今天,我们来做一波Logback与Log4j2的测试和调研. 服务器硬件 CPU 六核 内存 8G 测试工具 JMeter JProfile APM(New Relic) logback日 ...

  • SpringBoot统一日志框架

    在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析.在Java领域里存在着多种日志框架,如JCL.SLF4J.Jboss-logging.jUL.log4j.log ...

  • 从零实现一个日志框架(带源码)

    程序员springmeng2021-01-19 09:38:00 Java里的各种日志框架,相信大家都不陌生.Log4j/Log4j2/Logback/jboss logging等等,其实这些日志框架 ...

  • 日志框架的体系结构及logback的使用

    提到Java log日志,很多人不仅会想到各种各样的日志框架,还会想到各种日志框架之间冲突的jar包.下面我们来介绍一下他们之间的关系,以及如何选择他们.日志框架Log4j由Java编写可靠.灵活的日 ...

  • 最牛逼的 Java 日志框架,性能无敌,横扫所有对手。。

    来自:掘金,作者:空无 链接:https://juejin.cn/post/6945753017878577165 Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今 ...

  • 生活的实证日志和上坐的实证日志

    我们大家在实证的时候总是把实证狭义化, 大多数人总认为实证就是上坐, 上坐之 后摆个姿势坐在那里, 然后有所观想有所作为,这叫实证. 事实上对于高人来说,真正的实证是生活, 生活中都是在实证的. 因此 ...

  • 【日志边框】祥云图案日志边框

    边框1复制起点此处输入文字内容边框1复制终点边框2复制起点此处输入文字内容边框2复制终点边框3复制起点此处输入文字内容边框3复制终点边框4复制起点此处输入文字内容边框4复制终点

  • 【日志边框】精美竹简日志边框集锦

    此处输入文字内容边框1复制终点边框2复制起点此处输入文字内容边框2复制终点边框3复制起点此处输入文字内容边框3复制终点边框4复制起点此处输入文字内容边框4复制终点边框5复制起点此处输入文字内容边框5复 ...