无法从Windows服务中托管的Asp.net核心网站启动多个Serilog接收器

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

我的服务运行正常,它正在写入事件日志serilog接收器也很好。我的问题是,serilog拒绝写入appsettings.json提供的任何其他接收器我的Appsettings.json片段

 "Serilog": {
    "Using": [ "Serilog.Sinks.EventLog" ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "System": "Information",
        "Microsoft": "Information"
      }
    },
    "WriteTo": [

      {
        "Name": "EventLog",
        "Args": {
          "source": "FMS",
          "manageEventSource": true
        }
      },          
      {
        "Name": "RollingFile",
        "Args": {

          "pathFormat": "D:\\publish\\log-{Date}.txt",
          "rollingInterval": "Day",
          "fileSizeLimitBytes": 1024,
          "retainedFileCountLimit": 60,
          "shared": true,
           "buffered": true
        }
      }
    ],
    "Enrich": [ "WithProcessId", "WithProcessName", "WithExceptionDetails" ]
  }

我正在我的CustomWebHostService中设置我的记录器

public IConfiguration Configuration { get; } = new ConfigurationBuilder()
            .SetBasePath(Data.GetDirectoryPath())//gets directory
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddEnvironmentVariables()
            .Build();

        public CustomWebHostService(IWebHost host) : base(host)
        {
            Log.Logger = new LoggerConfiguration()
              .ReadFrom.Configuration(Configuration)
              .CreateLogger();
        }

我试过创建一个控制台接收器和一个普通的旧文件接收器,除了事件日志接收器之外没有任何工作。我已经更新到所有必需的nuget包的最新稳定版本。

编辑:我已经尝试过,服务可以写入该位置。

asp.net-core windows-services serilog
1个回答
0
投票

问题是这一行

"Using": [ "Serilog.Sinks.EventLog" ],

如果您使用此语法,则需要指定所有接收器。它可以被完全移除并且水槽可以工作(或者您可以指定它,这样您就可以使用一条线轻松关闭水槽)

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