您现在的位置是:亿华云 > 系统运维
日志框架NLog之将日志发送到邮件
亿华云2025-10-03 18:24:28【系统运维】3人已围观
简介本文转载自微信公众号「UP技术控」,作者conan5566 。转载本文请联系UP技术控公众号。背景NLog可以将日志输出到不同的媒介上,邮件是其中一个,通过邮件可以让我们第一时间收到信息。使用SMTP
本文转载自微信公众号「UP技术控」,日志日志作者conan5566 。框架转载本文请联系UP技术控公众号。发送
背景
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 -指示是否在身体换行字符应改为 标签。布尔默认值: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
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
很赞哦!(2611)