У меня есть базовое приложение asp.net, и это моя установка:
services.AddSingleton(typeof(ISchedule), typeof(MySchedule));
services.AddLogging();
services.AddScheduler((sender, args) =>
{
// How do I log here?
});
К сожалению, я не могу контролировать это промежуточное ПО планировщика, так что AddScheduler и лямбда - всеУ меня есть.
Пока единственное, что мне удалось придумать, это:
services.AddSingleton(typeof(ISchedule), typeof(MySchedule));
services.AddLogging();
IServiceProvider serviceProvider = services.BuildServiceProvider();
services.AddScheduler((sender, args) =>
{
ILogger<ISchedule> logger = serviceProvider.GetService<ILogger<ISchedule>>();
logger.LogError(args.Exception, "Uncaught exception during processing");
args.SetObserved();
});
Но это просто еще один способ проникнуть в своего рода «ServiceLocator» череззакрытие.
Есть идеи получше?Как это должно быть идеально обработано?
(Re это не дублирование Как мне записывать логи из Startup.cs , потому что речь идет о внедрении в обработчик событий, а не вобъект запуска.)