背景
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/260841.html
標籤:.NET技术
