3

我有一个 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”的另一种方式。

有没有更好的想法?理想情况下应该如何处理?

(这不是我如何从 Startup.cs 中写入日志的重复,因为这是关于注入到事件处理程序中,而不是在启动对象中。)

4

0 回答 0