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

Serilog .net下的新兴的日志框架

Serilog .net下的新兴的日志框架

1.Serilog简介

Serilog 是针对 .NET 应用程序的流行日志记录框架。它以其灵活性、易用性和可扩展性而闻名。借助 Serilog,开发人员可以轻松记录应用程序中的事件、错误和消息。它支持结构化日志记录,能够以结构化格式存储日志数据,便于查询和分析。

Serilog 的一个关键特性是其能够使用不同的“sinks”(日志事件的目标位置)。这些“sinks”可以包括控制台、文件、数据库以及第三方服务,如 Seq 或 Elasticsearch。

开发人员还可以通过 Serilog 为日志事件添加额外的属性和上下文信息,从而更容易地追踪问题并理解应用程序的流程。Serilog 还支持不同的输出格式,比如 JSON 或纯文本,进一步增强了其灵活性。

2.添加需要的包引用

在这里插入图片描述

3.编写整个日志代码

// 创建日志
Log.Logger = new LoggerConfiguration()
     .WriteTo.File("log.txt",outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}[{Level:u3}] {Message:ij}{Exception}{NewLine}")
    .CreateLogger();

// 消除日志
Log.CloseAndFlushAsync();

4.使用日志代码

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

int a = 10, b = 0;
try
{
    Log.Debug("Dividing {A} by {B}", a, b);
}
catch (Exception ex)
{
    Log.Error(ex.Message);
    Log.Error(ex, "Something went wrong");
}
finally
{
    await Log.CloseAndFlushAsync();
}

5.输出模板中可以显示许多内置属性

  • Exception
    • 完整的异常消息和堆栈跟踪,跨多行格式化。如果没有与事件关联的异常,则为空。
  • Level{Level:u3}{Level:w3}
    • 日志事件级别,格式为完整级别名称。对于更紧凑的级别名称,请分别使用三个字符的大写或小写级别名称等格式。
  • Message:l:j
    • 日志事件的消息,呈现为纯文本。格式说明符关闭字符串的引用,并对任何嵌入的结构化数据使用 JSON 样式呈现。
  • NewLineSystem.Environment.NewLine
    • 换行标志
  • Properties:j
    • 未出现在输出中其他位置的所有事件属性值。使用该格式来使用 JSON 呈现。
  • TimestampDateTimeOffset
    • 事件的时间戳,以 .DateTimeOffset

6.日志demo

2023-11-30 14:30:25.987 +08:00 [INF] Hello, world!
2023-11-30 14:30:26.062 +08:00 [DBG] Dividing 10 by 0
2023-11-30 14:30:26.107 +08:00 [ERR] Something went wrong
System.DivideByZeroException: Attempted to divide by zero.
   at Program.Main() in F:\学习\Serilog\ConsoleApp\Program.cs:line 21

2023/11/30


http://www.kler.cn/a/154615.html

相关文章:

  • 整数唯一分解定理
  • VSCode设置
  • STM32寄存器结构体详解
  • 图形几何之美系列:二维凸包艺术赏析
  • Python小试牛刀:第一次爬虫,获取国家编码名称
  • 【全面系统性介绍】虚拟机VM中CentOS 7 安装和网络配置指南
  • 使用WalletConnect Web3Modal v3 链接钱包基础教程
  • MATLAB算法实战应用案例精讲-【智能优化算法】生物地理学优化算法-BBO(附MATLAB代码实现)
  • QProcess 启动 进程 传参数 启动控制台进程 传参
  • Python标准库:math库【侯小啾python领航班系列(十六)】
  • STM32F407-14.3.8-01强制输出模式
  • 删除链表的倒数第N个节点,剑指offerII(21),力扣
  • 给Web3应用新增区块链数据(Web3项目一实战之六)
  • iceoryx(冰羚)-进程间消息同步
  • c语言:整数与浮点数在内存中的存储方式
  • 抖音视频如何无水印保存?抖音视频无水印保存教程
  • k8s部署jenkins
  • 【前端】JS实现SQL格式化
  • Adobe Indesign操作
  • 『测试基础』| 如何理解测试用例管理和缺陷管理?
  • 【海思SS528 | VO】MPP媒体处理软件V5.0 | 视频输出模块——学习笔记
  • RxJava
  • Halcon tiff 点云读取以及平面矫正
  • 算法工程师面试八股(搜广推方向)
  • jenkins使用nexus插件
  • 如何创建一个vue工程