日誌框架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的消息

  • 到-收件人的電子郵件地址,用分號分隔(例如[email protected][email protected])。佈局。從NLog 4.0開始,不再需要此字段,但應定義To,BCC或CC,否則將引發異常。

  • 密件抄送-用分號分隔的密件抄送電子郵件地址(例如[email protected][email protected])。佈局

  • cc-用分號分隔的CC電子郵件地址(例如[email protected][email protected])。佈局

  • 來自-發件人的電子郵件地址(例如[email protected])。需要佈局。

  • 體-同佈局屬性。郵件消息正文(對於一封郵件中發送的每條日誌消息重複)。佈局默認值:${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="[email protected]" 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章