我有一个asp.net核心应用程序,这是我的设置:
services.AddSingleton(typeof(ISchedule), typeof(MySchedule));
services.AddLogging();
services.AddScheduler((sender, args) =>
{
// How do I log here?
});
不幸的是,我无法控制该调度程序中间件,因此我只能拥有AddScheduler和lambda。
到目前为止,我唯一想出的是:
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”的另一种方式。
还有更好的主意吗?应该如何理想地处理它?</ p>
(这不是How do I write logs from within Startup.cs的重复,因为这是关于注入事件处理程序而不是启动对象中的。)