serilog / serilog-settings-configuration

A Serilog configuration provider that reads from Microsoft.Extensions.Configuration
Apache License 2.0
446 stars 129 forks source link

当系统服务开发时,输出日志不能在当前项目目录下的问题。 #349

Closed citystory closed 1 year ago

citystory commented 1 year ago

当开发系统服务时,在appsettings.json中配置的日志输出路径不是在当前项目目录下,而是出现在了C:\Windows\System32下。配置内容如下。

"Serilog": {
  "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
  "MinimumLevel": "Debug",
  "WriteTo": [
    { "Name": "Console" },
    {
      "Name": "File",
      "Args": {
        "path": "Logs/log.txt",
        "rollingInterval": "Day",
        "fileSizeLimitBytes": "10485760"
        "retainedFileCountLimit": 5,
        "rollOnFileSizeLimit": true
      }
    }
  ],
  "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
  "Properties": {
    "Application": "Sample"
  }
}

检查源码,在做系统服务开发时,当前项目路径获取是Path.GetDirectoryName(typeof(Program).Assembly.Location),但是现在的代码中不是这样的,所以造成了这个错误。

0xced commented 1 year ago

ログパスを実行ファイルからの相対パスとしたい場合は、アプリの起動コードの最初のステップで次のように記述してください。

Environment.CurrentDirectory = AppContext.BaseDirectory;
citystory commented 1 year ago

私はテストしました、ログ出力パスは正しい、ありがとうございます