造轮子之日志

发布时间 2023-10-08 11:47:35作者: 饭勺oO

在日常使用中日志也是我们必不可少的一环,在原生日志组件中支持的日志驱动比较少,所以我们需要使用一些三方日志组件来扩展我们的日志记录。

集成Serilog

三方日志组件有很多,如NLOG,LOG4NET等等,这里个人习惯,使用Serilog。
Serilog的集成方式非常简单。

安装Nuget包

Serilog.AspNetCore
Serilog.Sinks.Async
Serilog.Sinks.File

在Program中添加代码:

var builder = WebApplication.CreateBuilder(args);

// logging
Log.Logger = new LoggerConfiguration()
#if DEBUG
    .MinimumLevel.Debug()
#else
    .MinimumLevel.Information()
#endif
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
    .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
    .WriteTo.Async(c=>c.Console())
    .WriteTo.Async(c=>c.File("Logs/log.txt", rollingInterval: RollingInterval.Day))
    .CreateLogger();

builder.Host.UseSerilog();

就这样最简单的完成了我们Serilog的集成。
上面代码我们配置了日志记录级别,和相关过滤条件,以及控制台输出和文件输出,文件输出自动按每天分文件。
这里使用了一个Serilog.Sinks.Async的包,这个包把日志采用异步的方式写入,可以提高我们日志的写入性能。

当然,如果追求日志更灵活配置,可以使用Serilog.Settings.Configuration这个包,这个包可以从配置文件中读取我们的日志配置。

同时Serilog.Sinks提供了很多日志输出方式,包括日志输出到ELK,SqlServer,Email等等,当然,我们也可以自定义Sinks将日志写入我们自己的日志系统中。按照实际需求场景配置即可。

欢迎进群催更。

image.png