繁体   English   中英

Program.cs 中的 .NET Core Worker Serilog 日志记录

[英].NET Core Worker Serilog logging inside Program.cs

在 .Net Core 3.1 worker 中,我尝试在Program.cs文件中使用 serilog 进行日志记录。 Serilog 配置在appsettings.json里面,而CreateHostBuilder就像

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();

}

我已经设法在 Main 类中使用 Serilog

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);
    }            
}

我想知道如何在ConfigureServices制作 Serilog 日志。 我在ConfigureServices使用过

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

但在那之后,我得到了多个文件 - 每个调试会话使用 F5 两个文件,我想登录一个(每天,这是配置的):

在此处输入图片说明

我已经设法在这里找到解决方案

希望有人会觉得它有用:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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