为了账号安全,请及时绑定邮箱和手机立即绑定

如果在特定程序集中引发异常,Serilog 发送邮件

如果在特定程序集中引发异常,Serilog 发送邮件

C#
慕无忌1623718 2022-10-23 15:37:35
我正在开发一个包含多个程序集的 asp.net core (2.2) 应用程序。对于日志记录,我将 serilog 用于 asp.net 核心。现在需要在抛出异常时发送邮件。关键是:只有在一个特定程序集中抛出异常时才发送电子邮件。有没有办法通过 serilog 电子邮件接收器实现这一目标?谢谢你。
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

它不是特定于电子邮件接收器,而是任何记录器配置。有关很多示例,请参见此答案。类和命名空间也可以被过滤,并且您可以通过不同的接收器记录来自其他程序集的异常。像滚动文件。 根据上下文源将 Serilog 日志过滤到不同的接收器?


查看完整回答
反对 回复 2022-10-23
?
FFIVE

TA贡献1797条经验 获得超6个赞

下面是满足要求的appsettings.json的配置:


 "Serilog": {

        "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Email" ],

        "MinimumLevel": {

            "Default": "Information",

            "Override": {

                "Microsoft": "Information",

                "System": "Warning"

            }

        },

        "WriteTo": [

            {

                "Name": "File", // general logging

                "Args": {

                    "path": "", // ToDo: Add log path

                    "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] [{SourceContext}] ({Application}/{MachineName}/{EnvironmentUserName}) {Message}{NewLine}{Exception}",

                    "rollingInterval": "Day",

                    "shared": true

                }

            },

            {

                "Name": "Logger",

                "Args": {

                    "configureLogger": {

                        "WriteTo": [

                            {

                                "Name": "Email",

                                "Args": {

                                    "restrictedToMinimumLevel": "Error",

                                    "outputTemplate": "{Message}{NewLine}{NewLine}Zeitpunkt: {Timestamp:HH:mm:ss}{NewLine}Klasse: {SourceContext}{NewLine}{NewLine}{Exception}",

                                    "FromEmail": "{email address}", // ToDo: Add DefaultMailAddress

                                    "ToEmail": "{email address}", // ToDo: Add recipient mail addresses (separator: ; or ,)

                                    "MailServer": "", // ToDo: Add host

                                    "MailSubject": "", // ToDo: Add mail subject

                                    "NetworkCredentials": {

                                        "userName": "", // ToDo: Add UserName

                                        "password": "" // ToDo: Add Password

                                    },

                                    "Port": 25, // ToDo: Add Port

                                    "EnableSsl": true,

                                    "IsBodyHtml": true

                                }

                            }

                        ],

                        "Filter": [

                            {

                                "Name": "ByIncludingOnly",

                                "Args": {

                                    "expression": "StartsWith(SourceContext, 'Assembly.Namespace.')"

                                }

                            }

                        ]

                    }

                }

            }

        ],

        "Enrich": [ "FromLogContext", "WithMachineName", "WithEnvironmentUserName" ],

        "Properties": {

            "Application": "My.Application"

        }

    }


查看完整回答
反对 回复 2022-10-23
  • 2 回答
  • 0 关注
  • 294 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号