简体   繁体   中英

.NET Core Worker Serilog logging inside Program.cs

In .Net Core 3.1 worker I am trying to log using serilog inside my Program.cs file. Serilog config is inside appsettings.json , and CreateHostBuilder is like

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureHostConfiguration(builder =>
        {
            builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            builder.AddJsonFile("appsettings.Development.json", optional: true);
        })
        .UseSerilog((hostContext, loggerConfig) => {
            loggerConfig.ReadFrom.Configuration(hostContext.Configuration);
        })
        .ConfigureServices((hostContext, services) =>
        {
            // configuring some services here, and I want to log message to serilog

        })
        .UseWindowsService();

}

I have managed to use Serilog inside Main class using

public static void Main(string[] args)
{
    // CreateHostBuilder(args).Build().Run(); // inital code
    var host = CreateHostBuilder(args).Build();
    // get logger instance
    var logger = host.Services.GetService<ILogger<Program>>();

    try
    {
        logger.LogInformation("Worker started succesfully.");
        host.Run();
    }
    catch (Exception ex)
    {
        logger.LogCritical(ex, "Starting worker failed!");
        Environment.Exit(160);
    }            
}

I would like to know how is it possible to make Serilog logs inside ConfigureServices . I have used in ConfigureServices

            var provider = services.BuildServiceProvider();
            var logger = provider.GetService<ILogger<IHostBuilder>>();

but after that, I am getting multiple files - two files per debugging session with F5, and I want to log to one (per day, that is configured):

在此处输入图片说明

I have managed to find solution HERE

Hope that someone will find it useful :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM