Serilog - 如何在文本文件中按升序记录消息?

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

目前,我的 Serilog 实现按降序排列日志文件 - 在顶部显示最旧的消息,在底部显示最新的消息。我希望我的实现按升序登录 - 最新的在顶部,最旧的在底部。

这就是我目前拥有的

Program.cs

public static void Main(string[] args)
        {
            string timestamp = DateTime.Now.ToString("[yyyy-MM-dd][HH.mm.ss tt]", CultureInfo.InvariantCulture);

            Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.File($"C:\\Logs\\{timestamp}-log.txt",
                outputTemplate: "Time:{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
                rollingInterval: RollingInterval.Day,
                restrictedToMinimumLevel: LogEventLevel.Information
             )
            .CreateLogger();

            CreateHostBuilder(args).Build().Run();
        }

我怎样才能实现这个目标?

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

考虑到文件在当前大多数操作系统上的工作方式,这是不切实际的。

它至少有以下缺点:

  • 效率极低(新条目之后的所有内容都需要重写)
  • 有多个实例写入同一个文件:导致锁定时间更长(某些文件 API 允许您同时 附加而不丢失数据,而对于前置这将需要 自定义实现)

日志聚合服务器通常会根据您的需要呈现数据,并带来其他优势。

规范的已关闭问题提出同样的问题

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