当前位置: 首页 > news >正文

.NETCore Serilog 代码设置相关参数说明及按Sink设置不同级别(不同日志级别),使用异步方式写日志

rollingInterval设置为RollingInterval.Day与fileSizeLimitBytes配合使用:

在.NET Core Serilog中,同时设置rollingInterval = RollingInterval.Day和fileSizeLimitBytes参数并不会产生配置冲突。这两个参数实际上是互补的,共同提供了更灵活的日志文件管理策略。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

正常普通配置参考这一篇.NETCore Serilog 代码设置 按指定大小生成日志方式:https://blog.csdn.net/hefeng_aspnet/article/details/155065007

参数协同工作原理

Serilog的文件接收器能够同时处理基于时间和基于大小的滚动策略。当日志写入时,系统会优先检查文件大小限制,如果当前文件达到fileSizeLimitBytes指定的大小,就会立即创建新的日志文件。同时,无论文件大小如何,每到新的一天(根据RollingInterval.Day设置),系统也会自动创建新的日志文件。

实际文件生成示例

假设配置如下:

.WriteTo.File("logs/app.log",
rollingInterval: RollingInterval.Day,
fileSizeLimitBytes: 10 * 1024 * 1024,
rollOnFileSizeLimit: true)

可能产生的文件序列包括:

app20251118_001.log(当日第一个文件,达到10MB后滚动)
app20251118_002.log(当日第二个文件)
app20251119_001.log(次日新建文件)

配置建议

在实际应用中,这种组合配置特别适用于高流量的生产环境,既能防止单个日志文件过大影响性能,又能按天归档便于日志分析。您可以根据具体需求调整这两个参数的值,它们会协同工作而不会相互干扰。

shared、flushToDiskInterval 配置

在Serilog的File接收器配置中,shared和flushToDiskInterval是两个用于控制文件写入行为的参数。

shared参数设置为true时,允许日志文件被多个进程共享访问,这在多进程环境中特别有用。当启用此选项后,多个应用程序实例可以同时向同一个日志文件写入内容,而不会产生访问冲突。

flushToDiskInterval参数则用于控制日志内容刷新到磁盘的时间间隔。通过设置此参数,可以平衡日志记录的实时性与系统性能,确保在指定时间间隔内将缓冲的日志数据持久化到存储介质中。

以下是包含这两个参数的完整配置示例:

Log.Logger = new LoggerConfiguration()
.WriteTo.File(
"logs/app.log",
shared: true, // 允许多进程共享
flushToDiskInterval: TimeSpan.FromSeconds(1) // 每秒刷新到磁盘
)
.CreateLogger();

在实际应用中,可以根据具体需求调整flushToDiskInterval的值,较短的间隔能提供更好的数据安全性但可能影响性能,较长的间隔则相反。

按Sink设置不同级别,使用异步方式写日志

在Serilog中按Sink设置不同级别并使用异步方式,可以通过为每个Sink指定restrictedToMinimumLevel参数来限制日志级别,同时使用Serilog.Sinks.Async包实现异步写入。

以下是完整的配置示例:

using Serilog;
using Serilog.Events;

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug() // 全局最低级别

// 信息级别日志 - 异步写入
.WriteTo.Async(a => a.File(
"logs/information/log-.txt",
restrictedToMinimumLevel: LogEventLevel.Information,
rollingInterval: RollingInterval.Day,
fileSizeLimitBytes: 10 * 1024 * 1024,
rollOnFileSizeLimit: true,
retainedFileCountLimit: null
))

// 错误级别日志 - 异步写入
.WriteTo.Async(a => a.File(
"logs/error/log-.txt",
restrictedToMinimumLevel: LogEventLevel.Error,
rollingInterval: RollingInterval.Day,
fileSizeLimitBytes: 5 * 1024 * 1024,
rollOnFileSizeLimit: true
))

// 调试级别日志 - 异步写入到控制台
.WriteTo.Async(a => a.Console(
restrictedToMinimumLevel: LogEventLevel.Debug
))

// 控制台输出所有级别
.WriteTo.Console()

.CreateLogger();

try
{
Log.Information("应用程序启动");

// 测试不同级别的日志
Log.Verbose("这是一条详细日志");
Log.Debug("这是一条调试日志");
Log.Information("这是一条信息日志");
Log.Warning("这是一条警告日志");
Log.Error("这是一条错误日志");
Log.Fatal("这是一条严重错误日志");

// 模拟应用程序运行
await Task.Delay(1000);
Log.Information("应用程序运行正常");
}
catch (Exception ex)
{
Log.Fatal(ex, "应用程序异常终止");
}
finally
{
Log.CloseAndFlush();
}

此配置实现了以下功能特点:通过异步写入机制避免了日志记录对主线程的阻塞;为不同级别的日志配置了独立的Sink,信息级别日志写入到logs/information/目录,错误级别日志写入到logs/error/目录;同时支持文件大小滚动和时间滚动策略,确保日志文件管理的灵活性。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

http://www.jsqmd.com/news/556333/

相关文章:

  • Qt图形项事件处理全解析:从mousePressEvent到mouseReleaseEvent的正确姿势
  • 别再只用伪随机数了!用这颗国产QRNG芯片给物联网设备(如摄像头、车联网)加一道量子安全锁
  • 打开软件就弹出D3DCompiler_47.dll错误 免费下载修复方法分享
  • 别再死记命令了!用eNSP模拟真实企业网,手把手教你配置华为防火墙安全策略(附排错思路)
  • 如何用ASP.NET API Versioning优雅管理API演进:完整入门教程
  • kqueue助力:macOS文件更改检测技术新探索
  • 3/22
  • memory-lancedb-pro混合检索揭秘:向量搜索+BM25如何提升AI记忆准确率300%
  • SegFormer源码解读:从注意力机制到特征融合的实现细节
  • 免费天气API接口大全:从实时预报到生活指数全覆盖
  • 【Java SE】var关键字
  • MathLive:重新定义数学输入的技术革新
  • 如何零成本实现仓储数字化?开源WMS系统全攻略
  • 5个关键步骤实现Windows容器VNC认证安全加固实战指南
  • Navicat Premium Mac版试用期重置技术解析与实战指南
  • Driver Store Explorer:Windows驱动存储管理的专业解决方案
  • 情报驱动安全:GOSINT框架的技术解构与实战价值
  • PvZ Toolkit 深度实战指南:从入门到精通的植物大战僵尸修改技术
  • TCN实战:用Python手把手搭建时序预测模型(附完整代码)
  • 别上来就学所有权!5行代码写出你的第一个Rust可执行程序
  • 3步解决微信公众号LaTeX公式排版:mpMath插件实战指南
  • 不用虚拟机!Windows直接搭建CentOS本地yum源的3种实战方案
  • 如何用DisplayCAL实现专业级显示器校准:从新手到专家的完整指南
  • @antv/mcp-server-chart开发者指南:自定义工具与扩展开发终极指南
  • League-Toolkit:解决英雄联盟游戏效率痛点的本地化工具方案
  • Chunky终极指南:如何快速高效预生成Minecraft区块提升服务器性能
  • GitHub平台多元功能及ll/34模拟器:技术亮点与行业影响
  • SpringBoot多数据源避坑指南:若依项目的DynamicDataSourceContextHolder原理详解
  • 5种方法实现Linux exFAT完美支持:告别FUSE性能瓶颈
  • OpenClaw+nanobot个人知识库:自动归类下载的技术文档