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

  • 到-收件人的电子邮件地址,用分号分隔(例如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

<PackageReference Include="NLog.MailKit" Version="3.0.0" />

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单六步,用数据说服你的听众

“相比表格&#xff0c;利用数据图展现数据的方法有可观的优势。庞大的数据令人厌烦&#xff0c;普通人在其中根本获取不到有用的信息&#xff0c;就像从黄瓜里面汲取不到阳光一样。”——摘取自《Economic and Industrial Delusions》一书&#xff0c;作者Arthur Briggs Farqu…

CCNA第五章WAN连接

转载于:https://blog.51cto.com/centrevy/176434

探索 .NET Core 依赖注入的 IServiceCollection

如果您使用了.NET Core&#xff0c;则很可能已使用Microsoft.Extensions.DependencyInjection中的内置依赖项注入容器&#xff0c;在本文中&#xff0c;我想更深入地了解Microsoft Dependency Injection&#xff08;DI&#xff09;容器中的 IServiceCollection。什么是依赖注入…

dev可以运行mysql文件夹_Linux查看mysql 安装路径和运行路径

一、查看文件安装路径由于软件安装的地方不止一个地方&#xff0c;所有先说查看文件安装的所有路径(地址)。这里以mysql为例。比如说我安装了mysql,但是不知道文件都安装在哪些地方、放在哪些文件夹里&#xff0c;可以用下面的命令查看所有的文件路径在终端输入&#xff1a;whe…

看完这13张图,不得不佩服还是外国人会玩人工智能

对于程序员来说&#xff0c;机器学习领域无疑充满着巨大的诱惑和挑战&#xff0c;很多人对里面复杂的概念和算法头疼不已&#xff0c;那么&#xff0c;有没有一套对新手既友好又明了&#xff0c;对老手能加深印象&#xff0c;不断复习的学习办法呢&#xff1f;有&#xff0c;今…

python通过封装可以实现代码复用_Python学习笔记(五)函数和代码复用

函数能提高应用的模块性&#xff0c;和代码的重复利用率。在很多高级语言中&#xff0c;都可以使用函数实现多种功能。在之前的学习中&#xff0c;相信你已经知道Python提供了许多内建函数&#xff0c;比如print()。同样&#xff0c;你也可以自己创建函数&#xff0c;这被叫做用…

实用的网络命令汇总

通过ping检测网络故障的典型次序 正常情况下&#xff0c;当你使用ping命令来查找问题所在或检验网络运行情况时&#xff0c;你需要使用许多ping命令&#xff0c;如果所有都运行正确&#xff0c;你就可以相信基本的连通性和配置参数没有问题&#xff1b;如果某些ping命令出现运行…

EFCore查缺补漏(二):查询

相关文章&#xff1a; EFCore查缺补漏第 20 轮 TechEmpower 评测结果出炉了&#xff0c;ASP.NET Core 的 Plaintext 成绩名列前茅&#xff0c;带着 EFCore 的测试却在 Single query / Multiple queries / Fortunes 中落了下风&#xff0c;成绩远不如 dapper&#xff0c;更不如直…

如何在mysql中打开mongodb_图解:如何从MySQL移植到MongoDB

【IT168 技术】下图是使用 SQL 和 MongoDB 的对应信息图表&#xff0c;点击图片查看大图&#xff1a;MongoDB是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。他支持的数据结构非常松散&#xff0c;是类似…

仿真模拟,需要注意这几点!

周日晚上的直播甚是精彩先是潘同学分享了获奖论文和解题技巧接着是董同学分享了论文的写作小技巧po几张截图让大家感受下此时此刻可能会有不少童鞋正在为错过直播而懊悔不用担心超模君还准备了一份豪华大礼本周超模君特意邀请到今年美赛D题特等奖获奖者谢挺同学&#xff08;获奖…

mfc从mysql中读取数据类型_在MFC中使用SQlite数据库读取数据

本人在数据库里面用回调函数来处理读取函数的返回值&#xff0c;回调函数必须使用static类型才可以,这样处理起返回的数据变得非常的麻烦&#xff0c;很难处理结果集。后来从网上找了一个预编译的例子&#xff0c;放在网上和网友分享。例子成功的调试通过了sqlite3 *db 0;sqli…

php 结构体_php基础知识集合

微信公众号&#xff1a;PHP在线源码PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法编译器编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序一个现代编译器的主要工作流程&#xff1a;源代码 (source code) → 预处理器 (prepr…

Kubernetes 凭什么成了云原生应用底座?

微软开源的 云原生应用开发的框架 Dapr 发布了1.0 版本《Dapr 正式发布 1.0》&#xff0c;云原生应用开发更加简单容易&#xff0c;Dapr 的容器编排环境也是用的Kubernetes。过去几年&#xff0c;以 Docker、Kubernetes 为代表的容器技术已发展为一项通用技术&#xff0c;BAT、…

【汇总推荐】深度学习、自然语言处理干货笔记汇总

今天这篇文章对十一月份推送的干货笔记&#xff0c;做一个总结&#xff0c;大家可以进行分类查找&#xff0c;希望对大家有所帮助。人工智能实战技巧与学习方法系列免费公开课【重磅福利】人工智能实战技能与学习方法系列公开课免费分享深度学习干货文章【直观理解】一文搞懂RN…

计算机网络四级考试

计算机网络四级考试         第一章网络系统结构与设计的基本原则7月15日  8月6日          第二章中小型网络系统总体规划与设计方法7月17日  8月8日          第三章IP地址规划和设计方法7月19日  8月10日          第四章路由…

mongodb时间范围查询少8个小时_为何要对开源mongodb数据库内核做二次开发

关于作者前滴滴出行技术专家&#xff0c;现任OPPO文档数据库mongodb负责人&#xff0c;负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作&#xff0c;一直专注于分布式缓存、高性能服务端、数据库、中间件等相关研发。后续持续分享《MongoDB内核源码设…

谷歌微软高通反对英伟达收购ARM 值得国人深思

日前&#xff0c;外媒报道全球一些顶尖科技公司正在向美国反垄断监管机构表达反对英伟达公司收购ARM&#xff0c;认为该交易将损害对其业务至关重要的行业领域的竞争。谷歌、微软和高通公司等公司都对这笔价值400亿美元的交易感到担忧&#xff0c;并要求反垄断官员进行干预。谷…

爬虫 404 try_和我一起学爬虫

前几天就想写一个爬虫系列的文章&#xff0c;因为比较忙所以没有写&#xff08;还不是因为懒&#xff09;&#xff0c;趁着现在屋里比较的凉爽&#xff0c;心也比较的静&#xff0c;总结下目前遇到的一些爬虫知识&#xff0c;本系列将从简单的爬虫开始说起&#xff0c;以后会逐…

女神一秒变路人!腾讯研究AI卸妆效果算法出品“一键卸妆”功能

综合自&#xff1a;快科技、腾讯国际计算机视觉大会&#xff08;ICCV&#xff09;于 10 月 22 日到 29 日在意大利威尼斯举办&#xff0c;会上&#xff0c;腾讯优图团队带来了一个让所有女生恨得牙痒痒的功能——“一键卸妆”。所谓道高一尺魔高一丈&#xff0c;美图秀秀造福了…

perl对文件和目录进行操作

对文件和目录进行操作opendir 目录句柄&#xff0c;“目录”&#xff1b;for $a(readdir 目录句柄){printer $a}areaddir HOME;打印目录&#xff0c;没有排序。查找递归目录用File::Find删除文件&#xff1a;&#xff08;只是删掉连接&#xff0c;数据应该还没有删掉。我是这样…