【发布时间】:2019-12-06 19:51:51
【问题描述】:
在我的 asp.net core 2.1 项目中,想要在错误事件中发送邮件。 我有一个错误控制器,可以捕获全局错误并使用 ILogger 记录它们
现在在 Program.cs 的主要方法中,我按照文档的建议进行操作 但是邮件没有发送! 如果我在 ErrorController 中移动代码,Sink 可以工作,但我认为这是不好的方式
public static void Main(string[] args)
{
var emailInfo = new EmailConnectionInfo
{
FromEmail = "xxx",
ToEmail = "xxxx;",
MailServer = "smtp.gmail.com",
EmailSubject = "Error "
};
using (var logger = new LoggerConfiguration()
.MinimumLevel.Error()
.WriteTo.Email(emailInfo,
outputTemplate: "{Timestamp:HH:mm:ss}\t{Level:u3}\t{SourceContext}\t{Message}{NewLine}{Exception}")
.CreateLogger()
)
{
logger.Error("Error occured (test)...");
//CreateWebHostBuilder(args).Build().Run(); or here...
}
CreateWebHostBuilder(args).Build().Run();
}
测试邮件已发送,但应用程序错误时未发送
我在 ErrorController 中使用 Microsoft 扩展的 Logger
public ErrorController(ILogger<ErrorController> logger)
{
this.logger = logger;
}
然后在错误控制器的方法中我调用 logger.LogError(exception);
var feature = HttpContext.Features.Get<IExceptionHandlerFeature>();
logger.LogError(feature.Error);
【问题讨论】:
-
我怀疑真正的问题是如何集成 Serilog 和 ASP.NET Core 日志记录。此处发布的代码不使用 Serilog 记录任何内容。控制器中的任何日志调用都将使用 ASP.NET Core 的默认日志配置
-
那么我必须如何在我的应用程序中设置电子邮件接收器?我有点困惑
-
很好地发现了@PanagiotisKanavos ... OP,您仍然需要实际连接 Serilog 和 ASP.NET Core 才能协同工作。 github.com/serilog/serilog-aspnetcore 中的 README 示例涵盖了所有这些内容。
-
tks 是我忽略的好链接。但是对于 netcore 2.2 是否具有进程模式?适合 netcore 2.1 吗?
标签: asp.net-core serilog