2017-01-10 4 views
2

Я создаю консольное приложение, которое в основном просто вызывает вызовы в процедурах Хранилища базы данных. Это прекрасно работает, но теперь я столкнулся с этой небольшой проблемой - обработкой ошибок.Автоматическая регистрация ошибок с использованием Serilog

Я использую Serilog для регистрации ошибок, которые я получаю в текстовом файле, но проблема, с которой я сталкиваюсь, заключается в том, что я должен делать во всех случаях try-catch. Конечно, для небольшого программного обеспечения использование и использование try-catch не очень больно, но когда дело доходит до создания больших программных продуктов, я предполагаю, что когда-нибудь вы забудете ввести коды обработки ошибок ?? Поэтому мне было интересно, есть ли способ, с помощью которого Serilog может регистрировать и распечатывать ошибку, когда есть один по умолчанию?

Любые идеи/решения будут высоко оценены.

Благодаря

+0

Добавить обработчик событий для 'System.AppDomai n.CurrentDomain.UnhandledException' и зарегистрировать ошибку в обработчике - см. [этот вопрос] (http://stackoverflow.com/questions/3133199/net-global-exception-handler-in-console-application) – stuartd

+1

@stuartd Ah , извините - забыл упомянуть, что я использую ASP.NET CORE. Похоже, что они вытащили AppDomain :( – Danny

+0

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling имеет некоторые опции – stuartd

ответ

-1

Вы можете указать minimumLevel в error, чтобы захватить все исключения по всей основной asp.net приложения.

В Startup.cs, добавьте минимальный уровень ошибок, как this-

 Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Error() 
      .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "Serilog-{Date}.txt")) 
      .CreateLogger(); 

Или, если вы используете конфигурацию на основе укажите минимальный уровень в appsetting как this-

"Serilog": { 
    "Using": [ "Serilog.Sinks.RollingFile" ], 
    "MinimumLevel": { 
     "Default": "Error", 
     ...... 
     ...... 

и читать конфигурацию от appsetting.json в Startup.cs вот так:

 Log.Logger = new LoggerConfiguration() 
      .ReadFrom.Configuration(Configuration) 
      .CreateLogger(); 
Смежные вопросы