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

    <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

    1. Timeout Communication Problem Encountered During Transmission. Thie Is a Novell Groupwise Smtp Error 2. Tcp Read Error 3. Tcp Write Error 在联机时发生通讯中断的问题;Nov “Nlog是一个跨平台的.net日志组件”,具体怎么使用可以参考完善 .Net Core 项目 —NLog入门 (日志组件)下面就日志到qq邮箱的过程,进行阐述。 1.NLog.Config配置 2.关于qq邮箱的授权码的生成 a.在qq邮箱上点击设置,选择账号如下图所示 b.然后点击这里根据提示发送短信生成相应的邮箱生成码,添加到Nlog.config文件中去(smtpPassword) 3.实验结果 运行程序,查看邮箱得到如下结果。 NLog.Logger log = NLog.LogManager.GetCurrentClassLogger(); log.Trace("记录一条Trace log"); log.Debug("记录一条Debug log"); log.Info("记录一条Info log"); log.Warn("记录一条Waring log"); log.Error("记录一条Error log"); log.Fatal("记录一条Fatal log"); <?xml version="1.0" encod. 当系统出现问题时,系统管理员无法及时知道,往往由系统使用者告知,然后去服务器查看错误日志,这种传统的维护方法即耗时效率又低,且无法第一时间发现错误并修正,造成用户体验下降。能不能实现系统出现问题时能第一时间以邮件的形式通知系统管理员,让管理员的维护工作将变得主动和高效呢?今天介绍的NLog邮件发送功能会很好的解决这一问题。 NLog如何安装请参加我转载的文章NLog日志管理工具--入门实例      target name ="dbLogging " xsi:type ="Database " connectionStringName ="EtlLogGlobal ">        commandText>         insert into Logging([LogTime], [Machine],[ 1、通过VS建立一个控制台应用程序。 2、打开程序包管理器控制台,分别输入一下命令:Install-Package NLog  Install-Package NLog.config。稍等片刻程序会自动帮你添加NLog引用和NLog的配置文档(PS:还不懂如何打开程序包管理器控制台的,请查看一下链接 http://blog.csdn.net/ 一.GitHubAction简介 🧅什么是Github Action ? GitHubActions是一个持续集成和持续交付的平台,它可以帮助你通过自动化的构建(包括编译、发布、自动化测试)来验证你的代码,从而尽快地发现集成错误。github于2019年11月后对该功能全面开放,现在所有的github用户可以直接使用该功能。GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行您的工作流程,或者您可以在自己的数据中心或云基础架构中托管自己的自托管运行器。在使用Github Action