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

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

1.Serilog简介

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

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

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

2.添加需要的包引用

Serilog .net下的新兴的日志框架_第1张图片

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

你可能感兴趣的:(C#,.net)