【问题标题】:How to add custom file name to serilog file sink generated logs file如何将自定义文件名添加到 serilog 文件接收器生成的日志文件
【发布时间】:2021-09-10 15:42:27
【问题描述】:

我想将主机名添加到由 Serilog 文件接收器生成的日志文件中。

我在下面尝试过,但我的文件名在下面的代码中显示为log-{fileName}-20210910.txt

  vservices.AddLogging(logging => logging.AddSerilog(
            new LoggerConfiguration()
                .WriteTo.RollingFile(Path.Combine(Environment.CurrentDirectory, $"log-{fileName}.txt"),
                    outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {fileName}, {Message:lj}{NewLine}{Exception}")
                .CreateLogger()));

定义serilog配置时如何访问fileName变量?

【问题讨论】:

    标签: c# asp.net-core-3.1 serilog serilog-sinks-file


    【解决方案1】:

    你错过了 $ 符号

    var fileName = Environment.GetEnvironmentVariable("HOSTNAME") ?? "add-on";
        services.AddLogging(logging => logging.AddSerilog(new LoggerConfiguration()
            .WriteTo.RollingFile(Path.Combine(Environment.CurrentDirectory, $"log-{fileName}.txt"))
            .CreateLogger()));
    

    其他选项是:

    var fileName = Environment.GetEnvironmentVariable("HOSTNAME") ?? "add-on";
        services.AddLogging(logging => logging.AddSerilog(new LoggerConfiguration()
            .WriteTo.RollingFile(Path.Combine(Environment.CurrentDirectory, "log-" + fileName + ".txt"))
            .CreateLogger()));
    

    【讨论】:

    • 非常感谢布赖恩。还有一个帮助,我们可以在outputTemplate中使用fileName吗?检查我更新的问题。
    • 在这种情况下尝试:“{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {" + fileName +"}, {Message:lj }{新行}{异常}"
    【解决方案2】:

    对于我的 AspNet Core 6 WebApp,我添加了 steeltoe 占位符扩展库

    https://docs.steeltoe.io/api/v2/configuration/placeholder-provider.html

    将解析器添加到配置中

    public Startup(IConfiguration configuration)
    {
        _configuration = configuration.AddPlaceholderResolver();
    }
    

    然后更改了我的应用设置

    {
    
      "Serilog": {
        "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
        "MinimumLevel": "Debug",
        "WriteTo": [
          { "Name": "Console" },
          {
            "Name": "File",
            "Args": {
              "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
              "path": "/tmp/logs/webapi/${HOSTNAME}_.log", //Linux version
              //"path": "/tmp/logs/webapi/${COMPUTERNAME}_.log", //Windows version
              "rollingInterval": "Day",
              "rollOnFileSizeLimit": true,
              "fileSizeLimitBytes": 1073741824,
              "retainedFileCountLimit": 31
            }
          },
          {
            "Name": "Seq",
            "Args": { "serverUrl": "http://dc-seq-service:5341" }
          }
        ]
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多