Serilog 滚动日志仅记录在一个文件中

2024-05-08

有没有办法设置 Serilog 以在保持最大文件大小的同时继续登录同一文件?

换句话说,如果我将最大文件大小指定为 100MB,则该进程应在​​添加新条目之前从文件中删除较早的条目。


TL;DR 号;这File(或其RollingFile前身)不提供这样的设施,并且在任何时候都不太可能为磁盘支持的日志提供这种设施。

因此,可用的最佳解决方案是将最大计数设置为 2 个日志。

实现您所描述的内容的根本问题是,大多数文件系统的工作方式,需要重写整个文件以删除正在修剪的内容 - 这意味着编写者在发生这种情况时会阻塞事物(并导致不必要的工作)。需要克服的另一个问题是管理多个编写器中隐含的竞争条件,所有编写器都试图同时(和/或使用略有不同的参数)实现修剪。

(如果您查看 Serilog Github 问题列表,您会不时看到人们以不同的方式提出相同的问题,要求在文件顶部包含最新信息的日志)

UPDATE: 有人黑进去了 https://github.com/serilog/serilog-sinks-file/issues/40#issuecomment-420011666- 该问题涵盖了这个领域,但细节很好 -我的评论比这个答案更完整、更有条理;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Serilog 滚动日志仅记录在一个文件中 的相关文章

  • .Net Core使用serilog的小记

    与许多其他 NET 库一样 xff0c Serilog 为文件 控制台等提供基本的诊断日志记录 它易于设置 xff0c 具有干净的API xff0c 并且可以在最近的 NET平台之间移植 今天花了点时间好好研究了下 xff0c 记录下心得
  • Serilog :选择在运行时记录哪个接收器

    我将在 net 标准 2 0 库中实现 Serilog 我正在寻找一种方法来选择每个日志行应使用哪个接收器 假设我们在配置中定义了 2 个接收器 控制台和文件 Log Logger new LoggerConfiguration Minim
  • 什么是 Serilog 解构?

    Serilog的目的是什么 syntax 如果我运行以下命令 var dummy new Foo Bar Date DateTime Now Log Information Dummy object Dummy dummy 然后我得到控制台
  • Azure 中的 Serilog 与 API 应用程序

    我已将 Serilog 集成到使用 Asp Net Core 2 0 开发的 WebApi 项目中 这是配置代码Program cs Log Logger new LoggerConfiguration Enrich FromLogCont
  • 是否有相当于 log4net 的 BufferingForwardingAppender 的 SeriLog,仅用于警告/错误的详细日志记录?

    Serilog 有没有办法设置一个 有限大小 日志缓冲区来收集指定级别及以上的所有日志事件 即DEBUG 但不会将它们记录到目标接收器中 除非发生某个更高级别的事件 即WARNING 基本上我问是否有办法复制BufferingForward
  • Serilog WCF 在没有构造函数的情况下使用?

    我是 C 新手 我正在尝试在 WCF 应用程序中使用 serilog 此 WCF 应用程序托管在 IIS 6 0 上 我只需要在服务初始化时创建一次记录器 然而WCF似乎没有构造函数 如何仅创建下面的记录器一次并将其可供应用程序的其余部分使
  • 丰富 Serlilogs,为每个 Hangfire 作业提供独特的价值

    我使用 Hangfire 进行后台作业 使用 Serilog 进行日志记录 我正在尝试用以下内容来丰富我的序列日志TrackingId这样来自特定 Hangfire 作业的所有日志都将具有相同的TrackingId我可以过滤 我像这样配置
  • Serilog - 多个日志文件

    我正在使用 Serilog 进行日志记录 但无法弄清楚如何将日志事件分离到不同的文件 例如 我想将错误记录到 error log ddmmyyyy txt 并将警告记录到 warn log ddmmyyyy txt 这是我的记录器配置 Lo
  • Serilog - 无法根据属性记录到多个文件

    您好 我正在尝试使用以下命令在一个文件中记录一些消息 在另一个文件中记录其他消息Serilog 我尝试过以下配置 Log Logger new LoggerConfiguration WriteTo Map type audit name
  • Serilog不将日志输出到txt文件中

    我使用 dotnet 工作服务 net 5 我集成了 Serilog 以及浓缩器和接收器 但由于某种原因 我在文件日志中看不到任何输出 这是我的 appsettings json ConnectionStrings DefaultConne
  • Serilog MSSQL Sink 不将日志写入数据库

    我创建了一个 Net 类库 4 6 2 并创建了由其他接口 例如控制台应用程序 调用的 serilog 实现 现在 当我使用文件接收器类型时 日志将被写入文件 但使用 MSSQL 接收器时 日志不会这样做 日志表是使用 autoCreate
  • Serilog中不同级别的不同日志文件

    我正在使用 serilog 我需要将不同的日志级别保存到不同的文件 例如 debug 20200708 log 用于调试级别 info 20200798 log 用于调试级别等等 我使用了下面的代码 但它不能正常工作 var baseLog
  • 如何为 Cloudwatch 创建自定义文本格式化程序?

    我不明白如何为 Amazon Cloudwatch 创建自定义文本格式化程序 如上所述 var formatter new MyCustomTextFormatter 我正在尝试将 Serilog 日志写入 Amazon CloudWatc
  • Serilog - 如何制作自定义控制台输出格式?

    我在用Serilog https github com serilog serilog with Serilog 接收器 控制台 https github com serilog serilog sinks console在我的 C 项目中
  • Serilog:{..} 和 {@..} 之间的区别

    鉴于此代码 var d1 new x 5 y 88 Log Logger Information d1 d1 Log Logger Information d1 d1 d1 中的对象如何在两条 Log Logger Information
  • 如何使用 Serilog ForContext

    我是 Serilog 新手 很难弄清楚如何使用上下文功能 当我运行下面的代码时 输 出文件不包含报告 ID 我缺少什么想法吗 var logger new LoggerConfiguration WriteTo File C Log txt
  • 无法解析 ILogger 简单注入器 ASP.NET Core 2.0

    我们在 ASP NET Core 应用程序中使用简单注入器 最近我们决定使用 Serilog 进行日志记录 配置是在 Program cs 中完成的 如其所述文档 https github com serilog serilog aspne
  • 包恢复失败。回滚包更改 - Serilog.AspNetCore

    我有一个 asp net Core 项目 我正在尝试向其中添加一个记录器 我选择了我在其他项目中使用过的 SeriLog 但是当我尝试添加 Serilog AspNetCore 我得到的软件包版本 2 0 0 包恢复失败 回滚 后端 的包更
  • Serilog 破坏多个日志?

    这实在是太离奇了 我有 2 个完全独立的程序 它们都使用 Serilog 例如 Log Logger new LoggerConfiguration MinimumLevel Debug Filter ByExcluding e gt e
  • 使用 Serilog 时如何在输出消息中获取丰富的属性

    我正在尝试使用 Serilog 将丰富的属性输出到渲染的消息中 private static Tester GetTester return new Tester Count 7 Name Redmond Log Logger new Lo

随机推荐