如何将自定义文件名添加到serilog文件接收器生成的日志文件

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

我想将主机名添加到 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()));

如何在定义

fileName
配置时访问
serilog
变量?

c# asp.net-core-3.1 serilog serilog-sinks-file
3个回答
4
投票

您缺少 $ 符号

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()));

3
投票

对于我的 AspNet Core 6 WebApp,我添加了 Steeltoe Placeholder 扩展库

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

0
投票

我用这个将用户名添加到路径中

{"path": "/tmp/logs/webapi/%USERNAME%_.log"}

从环境变量中获取用户名

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