首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >串行日志和.NET核心2.1 HostBuilder配置

串行日志和.NET核心2.1 HostBuilder配置
EN

Stack Overflow用户
提问于 2018-06-07 04:01:53
回答 4查看 15.3K关注 0票数 12

我正在使用GRPCCore2.1 HostBuilder类来设置和运行.NET服务器,但是在正确配置SeriLog时遇到了问题,使得.NET核心日志记录管道以及我的应用程序中的其他地方都可以使用它(通过依赖注入)。

class Program
{
    private static async Task Main(string[] args)
    {
        var hostBuilder = new HostBuilder()
            .ConfigureServices((hostContext, services) =>
            {
                services.AddSingleton<ILogger>(BuildLogger);

                // other services here 
            })
            .ConfigureLogging((hostContext, loggingBuilder) =>
                loggingBuilder.AddSerilog(dispose: true));

        await hostBuilder.RunConsoleAsync();
    }

    private static ILogger BuildLogger(IServiceProvider provider)
    {

        // create a (global) logger
        Log.Logger = new LoggerConfiguration() 
            ...
            .CreateLogger();

        return Log.Logger;
    }
}

问题是,我需要调用loggingBuilder.AddSerilog()来使用上面几行DI服务配置中注册的单例ILogger

我意识到我可以直接调用BuildLogger()来获取ILogger实例,并将该实例注册到DI服务配置中,但似乎不应该这样做。我正在寻找一种从.ConfigureLogging()方法中访问ServiceProvider实例的方法,这样我就可以获得注册的ILogger,如下所示

serviceProvider.GetRequiredService<ILogger>();

并将其传递给AddSerilog()调用。有什么想法吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50728639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档