按日期分组的目录将日志写入文件。如何调整 Serilog 配置文件来实现此目的?

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

ASP NET CORE WEB API 项目。 点网版本:6

我决定使用 Serilog 进行日志记录,我希望将日志写入文件并从 Json 文件中读取配置

这是我所拥有的:

{
    "Name": "Logger",
    "Args": {
      "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
      "configureLogger": {
        "WriteTo": [
          {
            "Name": "File",
            "Args": {
              "path": "C:\\LogFiles\\{yyyy-MM-dd}\\server.log",
              "rollingInterval": "Day",
              "rollOnFileSizeLimit": true,
              "fileSizeLimitBytes": 100000000,
              "retainedFileCountLimit": null,
              "shared": true,
              "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff}|{Level:u3}|{CorrelationId}| {Message:lj}{NewLine}{Exception}"
            }
          }
        ]
      }
    }
  }

使用的库:

<PackageReference Include="Serilog.AspNetCore" Version="6.1.0" />
<PackageReference Include="Serilog.Enrichers.CorrelationId" Version="3.0.1" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.2.0" />
<PackageReference Include="Serilog.Expressions" Version="3.4.1" />
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
<PackageReference Include="Serilog.Formatting.Compact" Version="1.1.1-dev-00944" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.4.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />

将serilog json文件连接到项目:

 var builder = WebApplication.CreateBuilder(args);
    builder.Configuration.AddJsonFile("serilog.json", true, false);     
    Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(configuration)
                .Enrich.FromLogContext()
                .Enrich.WithCorrelationIdHeader(StringConstants.CorrelationId)
                .CreateLogger();
    
   builder.Host.UseSerilog();

这里,可以看到,路径包含{yyyy-MM-dd},但是不起作用。 “RollingInterval: Day”仅应用于文件,即文件是按日期(server20230223.log)创建的,我需要在按日期分组的目录(2023-01-23\server.log)内创建文件。日志)

是否可以通过serilog的配置文件来做到这一点?

c# asp.net-core serilog serilog-sinks-file serilog-aspnetcore
1个回答
0
投票

在尝试在 json 文件中设置路径时遇到类似的问题。 尝试使用基本日志路径设置环境变量并将其包含在 json 的 filePath 中。

记录器初始化之前的示例代码:

        string basePath = Environment.GetEnvironmentVariable("BASEPATH");
        if (basePath == null)
        {
        Environment.SetEnvironmentVariable("BASEPATH", AppDomain.CurrentDomain.BaseDirectory+"//" + DateTime.Now.ToString("MM/dd/yyyy"));
        }

示例 json- “写给”: [ { “名称”:“文件”, “参数”:{ "路径": "%BASEPATH%/logs/RT/RT-.log", "rollOnFileSizeLimit": "真", "rollingInterval": "日", "fileSizeLimitBytes": "500000", “共享”:“真实”, “retainedFileCountLimit”:“20” } } ]

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