关于net core 开发服务时,使用Serilog根据appsettings.json输出日志错误的问题。

使用Serilog输出日志时,配置内容如下,

  "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"
    }
  },

  输入日志目录在调试时是在项目路径下的,但是当发布后,输入日志则在C:\Windows\System32下,此问题的修复方法为在Main启动时,添加

Environment.CurrentDirectory = AppContext.BaseDirectory;
则可以修复这个问题。完整代码如下。
        public static void Main(string[] args)
        {
            Environment.CurrentDirectory = AppContext.BaseDirectory;

            try
            {
                Log.Information("Starting web host");
                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

  

posted @ 2023-02-17 15:38  马克部落格  阅读(64)  评论(0编辑  收藏  举报