日志框架NLog之將日志發(fā)送到郵件
本文轉(zhuǎn)載自微信公眾號(hào)「UP技術(shù)控」,作者conan5566 。轉(zhuǎn)載本文請(qǐng)聯(lián)系UP技術(shù)控公眾號(hào)。
背景
NLog可以將日志輸出到不同的媒介上,郵件是其中一個(gè),通過郵件可以讓我們第一時(shí)間收到信息。使用SMTP協(xié)議通過電子郵件發(fā)送日志消息。與FallbackGroup Target很好地結(jié)合在一起,以創(chuàng)建具有多個(gè)SMTP主機(jī)的后備。
配置語法
- <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>
參數(shù)
常規(guī)選項(xiàng)
- 名稱-目標(biāo)名稱。
- 布局選項(xiàng)
- 標(biāo)頭-標(biāo)頭。布局
- 頁腳-頁腳。布局
- 布局-要渲染的文本。需要布局。默認(rèn)值:${message}${newline}。與身體屬性相同
- html-指示是否以HTML而不是純文本形式發(fā)送消息。布爾默認(rèn)值:false
- addNewLines-指示是否在日志條目之間添加新行。布爾型
- replaceNewlineWithBrTagInHtml -指示是否在身體換行字符應(yīng)改為
- 標(biāo)簽。布爾默認(rèn)值:false
- 編碼-用于發(fā)送電子郵件的編碼。編碼默認(rèn)值:UTF-8訊息選項(xiàng)
- 主題-郵件主題。需要布局。默認(rèn)值:來自$ {machinename}上NLog的消息
- 到-收件人的電子郵件地址,用分號(hào)分隔(例如john@domain.com;jane@domain.com)。布局。從NLog 4.0開始,不再需要此字段,但應(yīng)定義To,BCC或CC,否則將引發(fā)異常。
- 密件抄送-用分號(hào)分隔的密件抄送電子郵件地址(例如john@domain.com;jane@domain.com)。布局
- cc-用分號(hào)分隔的CC電子郵件地址(例如john@domain.com;jane@domain.com)。布局
- 來自-發(fā)件人的電子郵件地址(例如joe@domain.com)。需要布局。
- 體-同布局屬性。郵件消息正文(對(duì)于一封郵件中發(fā)送的每條日志消息重復(fù))。布局默認(rèn)值:${message}${newline}
- 優(yōu)先級(jí)-郵件優(yōu)先級(jí)。
- 當(dāng)使用不帶NLog.MailKit軟件包的NLog時(shí),請(qǐng)使用System.Net.Mail.MailPriority。Low,Normal,High。
- 使用版本最高為v3.1的Nlog + NLog.MailKit版本時(shí),有效值為MimeKit.MessagePriority。NonUrgent,Normal,Urgent
- NLog.MailKit V3.2和上述接受NonUrgent / Low,Normal,Urgent / High為了向后兼容MTP選項(xiàng)
- smtpUserName-用于連接到SMTP服務(wù)器的用戶名(在SmtpAuthentication設(shè)置為“基本”時(shí)使用)。布局
- enableSsl-指示在與SMTP服務(wù)器通信時(shí)是否應(yīng)使用SSL(安全套接字層)。布爾值默認(rèn)值:False。注意:端口465不適用于SSL。見問題1226
- secureSocketOption-僅在NLog.Mailkit 2.1+中。提供一種指定SSL和/或TLS加密的方式。默認(rèn)為StartTlsWhenAvailable。選項(xiàng):無,自動(dòng),SslOnConnect,StartTls和StartTlsWhenAvailable。如果enableSsl設(shè)置為true,將使用SslOnConnect
- smtpPassword-用于針對(duì)SMTP服務(wù)器進(jìn)行身份驗(yàn)證的密碼(在SmtpAuthentication設(shè)置為“基本”時(shí)使用)。布局
- smtpAuthentication -SMTP身份驗(yàn)證模式。默認(rèn)值:無
可能的值:
- 基本-基本-用戶名和密碼。
- 無-無身份驗(yàn)證。
- Ntlm -NTLM身份驗(yàn)證。
- smtpServer-用于發(fā)送的SMTP服務(wù)器。需要布局。
- smtpPort -SMTP服務(wù)器正在偵聽的端口號(hào)。整數(shù)缺省值:25。注意:端口465不支持SSL。見問題1226
- useSystemNetMailSettings-從system.net/mailSettings強(qiáng)制使用smtp配置。布爾默認(rèn)值:False
- 超時(shí)-表示SMTP客戶端超時(shí)(以毫秒為單位)。整數(shù)默認(rèn)值:10000(10秒)
- PickupDirectoryLocation-獲取或設(shè)置應(yīng)用程序用來保存要由本地SMTP服務(wù)器處理的郵件的文件夾(在NLog 4.2中引入)。
- deliveryMethod-指定將如何處理傳出電子郵件(在NLog 4.2中引入)。默認(rèn)值:網(wǎng)絡(luò)可能的值:
- 網(wǎng)絡(luò)-電子郵件通過網(wǎng)絡(luò)發(fā)送到SMTP服務(wù)器。
- PickupDirectoryFromIis-電子郵件被復(fù)制到本地Internet信息服務(wù)(IIS)使用的提取目錄中以進(jìn)行傳遞。
- SpecifiedPickupDirectory-將電子郵件復(fù)制到PickupDirectoryLocation屬性指定的目錄中,以供外部應(yīng)用程序傳遞。
skipCertificateValidation-僅適用于NLog.MailKit。在NLog.MailKit 1.1中引入-跳過SSL認(rèn)證檢查
實(shí)現(xiàn)方式
1、vs添加引用NLog.MailKit
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、配置日志參數(shù)
- <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