Регистрация исключений в базе данных с использованием .NET Core Web API - PullRequest
0 голосов
/ 09 апреля 2019

Я новичок в .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);
}));

1 Ответ

0 голосов
/ 09 апреля 2019

Я предполагаю, что вы используете код, предоставленный Андреем здесь: https://stackoverflow.com/a/38935583

Я бы посоветовал вам зарегистрировать внешнее промежуточное программное обеспечение, такое как первый подход, предложенный Андреем в своем ответе.Затем в промежуточном программном обеспечении вы можете зарегистрировать сервис, который будет отвечать за вызов уровня доступа к данным.Этот DAL предлагает метод для записи ваших журналов в базу данных.

Эта статья поможет вам настроить приложение для работы с Entity Framework и Postgres, а также кодировать слои между: https://www.compose.com/articles/code-first-database-design-with-entity-framework-and-postgresql/

Для возобновления:

  • Настройте ваше приложение для использования EF Core с Postgres
  • Создайте объекты, с которыми вам нужно работать
  • Создайте доступ к даннымСлой, позволяющий вашему приложению воспроизводить данные
  • Кодировать слой службы и добавить службу, отвечающую за запись ваших журналов
  • Получите ваше промежуточное ПО Exception из startup.cs и заставьте его вызывать вашслужба журналов

Тем не менее, наилучшим подходом будет использование регистратора, такого как Log4net или Serilog.Таким образом, вы могли бы получить центральное место для получения журналов, и вы могли бы «отправлять» эти журналы в базу данных, файлы, почту и т. Д.

...