日志框架NLog之将日志发送到邮件

开发 架构
NLog可以将日志输出到不同的媒介上,邮件是其中一个,通过邮件可以让我们第一时间收到信息。使用SMTP协议通过电子邮件发送日志消息。与FallbackGroup Target很好地结合在一起,以创建具有多个SMTP主机的后备。

 [[382050]]

本文转载自微信公众号「UP技术控」,作者conan5566 。转载本文请联系UP技术控公众号。  

背景

NLog可以将日志输出到不同的媒介上,邮件是其中一个,通过邮件可以让我们第一时间收到信息。使用SMTP协议通过电子邮件发送日志消息。与FallbackGroup Target很好地结合在一起,以创建具有多个SMTP主机的后备。

配置语法

  1. <targets> 
  2.   <target xsi:type="Mail" 
  3.           name="String" 
  4.           header="Layout" 
  5.           footer="Layout" 
  6.           layout="Layout" 
  7.           html="Boolean" 
  8.           addNewLines="Boolean" 
  9.           replaceNewlineWithBrTagInHtml="Boolean" 
  10.           encoding="Encoding" 
  11.           subject="Layout" 
  12.           to="Layout" 
  13.           bcc="Layout" 
  14.           cc="Layout" 
  15.           from="Layout" 
  16.           body="Layout" 
  17.           smtpUserName="Layout" 
  18.           enableSsl="Boolean" 
  19.           secureSocketOption="None|Auto|SslOnConnect|StartTls|StartTlsWhenAvailable"
  20.           smtpPassword="Layout" 
  21.           smtpAuthentication="Enum" 
  22.           smtpServer="Layout" 
  23.           smtpPort="Integer" 
  24.           useSystemNetMailSettings="Boolean" 
  25.           deliveryMethod="Enum" 
  26.           pickupDirectoryLocation="String" 
  27.           timeout="Integer" 
  28.           skipCertificateValidation="Boolean" 
  29.           priority="Layout" 
  30.  /> 
  31. </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

  1. <nlog> 
  2.   <extensions> 
  3.     <add assembly="NLog.MailKit"/> 
  4.   </extensions> 
  5.   ... 

3、config配置邮箱信息

  1. <system.net> 
  2.   <mailSettings> 
  3.     <smtp from="mail@domain.com" deliveryMethod="SpecifiedPickupDirectory"
  4.       <network host="localhost" port="25"/> 
  5.       <specifiedPickupDirectory pickupDirectoryLocation="C:/Temp/Email"/> 
  6.     </smtp> 
  7.   </mailSettings> 
  8. </system.net> 

4、配置日志参数

  1. <target xsi:type="FallbackGroup"  
  2.         name="mail" 
  3.         returnToFirstOnSuccess="true"
  4.     <target xsi:type="Mail" 
  5.             name="mailserver1" 
  6.             subject="Layout" 
  7.             to="Layout" 
  8.             from="Layout" 
  9.             smtpServer="mx1.example.com"  
  10.             smtpPort="Integer" 
  11.             layout="Layout" /> 
  12.     <target xsi:type="Mail" 
  13.             name="mailserver2"  
  14.             subject="Layout" 
  15.             to="Layout" 
  16.             from="Layout" 
  17.             smtpServer="mx2.example.com"  
  18.             smtpPort="Integer" 
  19.             layout="Layout" /> 
  20.  
  21. </target> 

最后就可以收到日志邮件啦。

参考地址

https://github.com/nlog/NLog/wiki/Mail-target

 

责任编辑:武晓燕 来源: UP技术控
相关推荐

2010-06-30 12:37:04

SNMP服务器

2022-01-28 15:04:57

Python日志邮件

2024-09-29 16:11:55

NLogSQL数据库

2021-04-30 10:25:13

微软Edge浏览器

2009-07-07 14:32:47

JDK日志Formatter

2023-09-06 07:51:19

KubernetesOperator

2022-07-08 09:01:36

logback日志异常

2009-07-07 14:00:25

JDK日志Handler

2021-05-17 05:07:41

Linux扫描仪Samba共享

2010-05-31 15:34:34

MySQL数据库

2010-05-27 15:56:56

MySQL数据库

2024-12-04 08:17:49

日志框架NLog

2009-07-07 15:53:02

JDK日志

2021-10-08 10:05:10

数据包三次握手HTTP

2022-04-10 23:43:11

代码发送邮件后端

2020-09-04 08:08:22

物联网

2023-12-25 11:18:12

OpenTeleme应用日志Loki

2021-03-08 00:09:47

日志分布式管理

2024-03-11 00:01:00

PromtailLoki服务器

2011-02-21 13:40:17

点赞
收藏

51CTO技术栈公众号