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

news/2024/7/1 6:59:16

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://lihuaxi.xjx100.cn/news/1852406.html

相关文章

Linux常用命令----rmdir命令

文章目录 1. 简介2. 参数含义3. 常见用法及实例4. 注意事项5. 结语 1. 简介 rmdir命令在Linux系统中用于删除空的目录。它是一个基本的命令行工具,用于维护文件系统的组织结构。与rm命令不同,rmdir只能删除空目录,这提供了一种安全机制&…

修复电脑中缺失的VCRUNTIME140.dll文件的5个有效方法

vcruntime140.dll丢失5个修复方法与vcruntime140.dll是什么以及丢失对电脑的影响 引言: 在日常使用电脑的过程中,我们可能会遇到一些错误提示,其中之一就是“vcruntime140.dll丢失”。那么,什么是vcruntime140.dll?它…

2次MD5加密——用于分布式对话

用户端 : 指发起请求并与服务器进行交互的终端设备或应用程序。它可以是电脑、智能手机等。 用户端负责发送请求给服务端,并接收和处理服务端返回的响应。 服务端 : 是指提供服务、接收和处理用户端请求的计算机系统或应用程序。 它监听来自用…

CentOS一键安装docker脚本

CentOS安装Docker一键脚本 在CentOS上安装Docker是许多项目中常见的任务之一。为了简化这个过程,你可以使用下面的一键脚本。 #!/bin/bash# 卸载旧版本(如果有) sudo yum remove -y docker \docker-client \docker-client-latest \docker-c…

SSM SpringBoot vue考勤信息管理系统

SSM SpringBoot vue考勤信息管理系统 系统功能 登录 注册 个人中心 部门信息管理 上班时间管理 考勤信息管理 员工信息管理 签到管理 请假信息管理 加班申请管理 出差申请管理 开发环境和技术 开发语言:Java 使用框架: SSM(Spring SpringMVC Mybaits)或Spring…

DCDC前馈电容与RC串并联电路

一、RC串并联电路特性分析 1、RC串联电路 RC 串联的转折频率: f01/(2πR1C1),当输入信号频率大于 f0 时,整个 RC 串联电路总的阻抗基本不变了,其大小等于 R1。 2、RC并联电路 RC 并联电路的转折频率&…

使用easyExcel框架报错:服务器缺少字体

后台服务使用easyExcel框架生成表格,但是生成的时候报如下的错误: 这种报错其实就是部署服务的服务器缺少字体,正确的方法是安装字体。需要注意的是,测试环境服务器与生产环境服务器的在配置版本上可能存在差异,因此需…

mysql中字符串截取与拆分

按分隔符把字符串拆成多行 引言截取字符串一、left(str,length)二、right(str,length)三、截取特定长度的字符串四、按分隔符截取 分割字符串一、分割成多列二、分割成多行 总结 引言 截取和拆分字符串在编程生涯中是普遍存在的,在sql中也不例外,下面就…