首页 > 解决方案 > 使用 sc.exe 安装服务后 Serilog 不写入文件

问题描述

我为 windows 开发了一个 net core 3.1 服务,该服务工作正常,但无法写入日志文件。在调试期间 Serilog 会正确写入文件,但是一旦使用 sc 安装,它什么也不会写入。

程序.cs

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseWindowsService()
                .UseSerilog((hostingContext, loggerConfig) =>
                loggerConfig.ReadFrom.Configuration(hostingContext.Configuration)) // custom log event
                .ConfigureServices((hostContext, services) =>
                {
                    IConfiguration configuration = hostContext.Configuration;           //prendi la configurazione

                    ServiceInfo siOption = configuration.GetSection("ServiceInfo").Get<ServiceInfo>();

                    services.AddSingleton(siOption);

                    services.AddHostedService<Worker>();
                });
    }

appsetngs.json

 "Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.RollingFile" ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Default": "Information",
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "Logger",
        "Args": {
          "configureLogger": {
            "Filter": [
              {
                "Name": "ByIncludingOnly",
                "Args": {
                  "expression": "(@Level = 'Error' or @Level = 'Fatal' or @Level = 'Warning')"
                }
              }
            ],
            "WriteTo": [
              {
                "Name": "File",
                "Args": {
                  "path": "Logs/ex_.log",
                  "outputTemplate": "{Timestamp} [{Level:u3}] {Message}{NewLine}{Exception}",
                  //"outputTemplate": "{Timestamp:o} [{Level:u3}] ({SourceContext}) {Message}{NewLine}{Exception}",
                  "rollingInterval": "Day",
                  "retainedFileCountLimit": 7
                }
              }
            ]
          }
        }
      }
    ],
    "Enrich": [
      "FromLogContext",
      "WithMachineName"
    ],
    "Properties": {
      "Application": "ORAMS-II Service Status Telegram"
    }
  }
}

我不知道可能是什么问题,安装在linux机器上可以正确写入文件

标签: windowsasp.net-core.net-coreserviceserilog

解决方案


推荐阅读