首页 > 解决方案 > 尝试使用通用 HostBuilder 使用 .net core 2 控制台应用程序配置 Serilog

问题描述

尝试遵循此处的文档
https://github.com/serilog/serilog-extensions-hosting

在我的项目中引用这些包

<PackageReference Include="Serilog" Version="2.8.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />

当我尝试添加行 UseSeriLog 时,无法识别

错误 CS1061“IHostBuilder”不包含“UseSeriLog”的定义,并且找不到接受“IHostBuilder”类型的第一个参数的可访问扩展方法“UseSeriLog”(您是否缺少 using 指令或程序集引用?)

我的主要方法:

private static async Task Main(string[] args)
    {
        var isService = !(Debugger.IsAttached || args.Contains("--console"));

        Log.Logger = new LoggerConfiguration()
                      .WriteTo.File(@"d:\temp\consoleapp.log")
                      .CreateLogger();

        var hostBuilder = new HostBuilder()
         .ConfigureHostConfiguration(configHost => { configHost.AddCommandLine(args); })
         .UseContentRoot(@"D:\Services\BldgRunner\")
         .ConfigureAppConfiguration((hostingContext, config) =>
         {

             var env = hostingContext.HostingEnvironment;
             config.AddCommandLine(args);
             config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
             config.AddEnvironmentVariables();
         })
         .ConfigureServices((hostContext, services) =>
         {
             //Inject additional services as needed
             services.AddHostedService<JobRunner>();
         })
         **.UseSeriLog()**
         .Build();


        if (isService)
        {
            await hostBuilder.RunAsServiceAsync();
        }
        else
        {
            await hostBuilder.RunConsoleAsync();
        }
    }

标签: .net-coreserilog

解决方案


您需要安装Serilog.Extensions.Hosting以与通用主机一起使用。

<PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />

推荐阅读