使用 .net core 创建的 Windows 微服务不会将日志写入路径

问题描述 投票:0回答:1

使用 .net core 创建的 Windows 微服务不会将日志写入路径

我从 c# .net core 创建了一个 Windows 服务,它在 appsettings.json 中使用 Serilog.Sinks.Async.File ,如下所示

"Serilog": {
"Using": [
"Serilog.Sinks.Async"
],
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": {
"restrictedToMinimumLevel": "Information",
"path": "%PROGRAMDATA%/logs/file.log",
"rollingInterval": "Day",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
]
}
},

上面的配置只是 appsettings.json 中的一个片段,但它还包括其中设置的其他标准参数。

请告诉我,作为本地系统运行的 Windows 服务是否可以将日志写入通过 appsettings.json 配置的 %PROGRAMDATA% 路径。如果将相同的日志文件配置为 Program.cs 中服务的一部分,则它可以工作

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.Destructure.UsingAttributes()
.WriteTo.Async(a =>
a.File(Environment.ExpandEnvironmentVariables("%PROGRAMDATA%\logs\file.log"))
.WriteTo.Console()
.CreateBootstrapLogger()
asp.net-core logging windows-services serilog-sinks-file serilog-aspnetcore
1个回答
0
投票

此日志记录有效。

Serilog.AspNetCore
Microsoft.Extensions.Hosting.WindowsServices

var builder = Host.CreateDefaultBuilder(args);
builder.UseSerilog((hostingContext, services, loggerConfiguration) => loggerConfiguration
                        .ReadFrom.Configuration(hostingContext.Configuration));
builder.ConfigureServices(services =>
    {
        services.AddHostedService<Worker>();
        services.AddWindowsService();
    });

var host =builder.Build();
host.Run();
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "%PROGRAMDATA%/Logs/log.txt",
          "rollingInterval": "Day",
          "restrictedToMinimumLevel": "Information"
        }
      },

测试

© www.soinside.com 2019 - 2024. All rights reserved.