Ответ 1
Разработал это, используя два варианта:
1) ILoggerProvider Внедрите свой собственный ILoggerProvider и ILogger из пространства имен Microsoft.Framework.Logging Затем присоедините его к MVC Framework в Startup.cs, добавьте следующий код:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
{
loggerfactory.AddProvider(new YourCustomProvider());
}
Но этот вышеприведенный параметр, по-видимому, вызывает функцию Write для ILogger в определенных событиях MVC, связанную маршрутизацию и т.д., он не вызывался, когда я выбрасывал исключения на своих нижних уровнях, поэтому был выработан второй вариант:
2) Глобальный фильтр Зарегистрируйте свою собственную реализацию ActionFilterAttribute в Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().Configure<MvcOptions>(options =>
{
options.Filters.Add(new YourCustomFilter());
});
}
Важно, чтобы пользовательский класс фильтра реализовал IExceptionFilter interace:
public class YourCustomFilter : ActionFilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext context)
{
///logic...
}
}
(РЕДАКТИРОВАТЬ:) А затем в классе Startup добавим фильтр:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
options.Filters.Add(new YourCustomFilter());
});
}