【问题标题】:Exception logging to database using .NET Core Web API使用 .NET Core Web API 将异常记录到数据库
【发布时间】:2019-08-30 16:29:27
【问题描述】:

我是 .NET Core Web API 的新手。我想将异常日志数据写入数据库。

我能够捕获所有异常,但我不知道下一个将数据写入数据库的实现在哪里。对于数据库,我使用的是 postgresql。

statup.cs

app.UseExceptionHandler(a => a.Run(async context =>
{
    var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
    var exception = exceptionHandlerPathFeature.Error;

    var result = JsonConvert.SerializeObject(new { error = exception.Message });
    context.Response.ContentType = "application/json";
    await context.Response.WriteAsync(result);
}));

【问题讨论】:

    标签: asp.net-core asp.net-core-2.0 asp.net-core-webapi asp.net-core-2.1


    【解决方案1】:

    我假设您在这里使用的是 Andrei 提供的代码:https://stackoverflow.com/a/38935583

    我可以建议您注册一个外部中间件,例如 Andrei 在他的回答中提出的第一种方法。 然后,在中间件中,您可以注册一个负责调用数据访问层的服务。该 DAL 将提供一种将日志写入数据库的方法。

    本文将帮助您配置您的应用程序以使用 Entity Framework 和 Postgres,并编写代码之间的层:https://www.compose.com/articles/code-first-database-design-with-entity-framework-and-postgresql/

    继续:

    • 将您的应用配置为使用 EF Core 和 Postgres
    • 创建您需要使用的实体
    • 创建数据访问层以允许您的应用使用数据
    • 编写服务层代码并添加负责编写日志的服务
    • 从 startup.cs 中取出您的 Exception 中间件并使其调用您的日志服务

    也就是说,最好的方法是使用 Log4net 或 Serilog 等记录器。通过这种方式,您可以从获取日志的中心位置受益,并且可以将这些日志“发送”到数据库、文件、邮件等。

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多