问题描述
我想使用Serilog.Sinks.Mail,并将其配置设置存储在appsettings json文件中,并且可以为我发送的每封邮件动态更改主题和邮件接收者。我为mailSubject设置了{Message},并由此将日志消息中的第一个单词输入到主题中,但是我想为每封邮件预先定义主题。
示例:在事件A处,将主题为“事件A”的邮件发送到PersonA@something.com。在事件B中,将主题为“事件B”的邮件发送至PersonB@something.com。
是否可以使用Serilog做到这一点,还是应该对邮件使用其他方式?
此刻,我对邮件的设置如下:
{
"Name": "Email","Args": {
"fromEmail": "fromEmail@something.com","toEmail": "testmail@something.com","mailServer": "testmailServer","batchPostingLimit": 1,"mailSubject": "{Message}","outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine:1}{Exception:1}"
}
解决方法
我想不出一种简单的方法。我认为最好的方法是使用C#代码进行配置,而不是通过appsettings.json
文件进行配置。
例如,您可以使用Serilog.Sinks.Map
(https://github.com/serilog/serilog-sinks-map)根据触发它的事件来配置其他接收器...
您仍然可以从appsettings.json
加载通用stuf,但是您必须自己加载这些设置。