首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Serilog文件名UTC日期格式

Serilog文件名UTC日期格式
EN

Stack Overflow用户
提问于 2020-09-13 17:21:10
回答 1查看 2.9K关注 0票数 0

我想在Serilog文件名中使用UTC DateTime。我在appseting.json文件中对serilog使用以下配置。

代码语言:javascript
运行
复制
"Serilog": {
    "Using": [],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "Enrich": [
      "FromLogContext",
      "WithMachineName",
      "WithProcessId",
      "WithThreadId"
    ],
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs\\log-.json",
          "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
          "rollingInterval": "Hour",
          "shared": true
        }
      }
    ]
  }

下面是用于serilog的program.cs文件代码。

代码语言:javascript
运行
复制
public static void Main(string[] args)
        {

            var configuration = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json").Build();

            Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(configuration)
                .CreateLogger();
            try
            {
                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception e)
            {
                Log.Fatal(e, "The Application failed to start correctly");
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args).UseSerilog()
                .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });

目前,serilog生成的日志文件名为log-2020091323.json,它不是UTC DateTime。我正在使用asp.net内核3.1。

EN

回答 1

Stack Overflow用户

发布于 2020-09-20 10:30:34

您可以使用Install-Package Serilog.Sinks.Map nuget包并在Serilog安装程序中信任它来存档这一点,如下面的代码示例所示

代码语言:javascript
运行
复制
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    // Ex: UtcDateTime value '202009201010'
    .WriteTo.Map("UtcDateTime", DateTime.UtcNow.ToString("yyyyMMddHHmm")
                    , (UtcDateTime, wt) => wt.File($"logs/log-{UtcDateTime}.txt"))
    .CreateLogger();

Log.Information("Hello, Serilog!");

Log.CloseAndFlush(); // Ex: log file name 'log-202009201010.txt'

此代码将日志保存到每个分钟的新文件中,如果您需要为每个hour use DateTime.UtcNow.ToString("yyyyMMddHH")DateTime.UtcNow.ToString("yyyyMMdd")为每个day配置它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63873570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档