在日常使用中日志也是我们必不可少的一环,在原生日志组件中支持的日志驱动比较少,所以我们需要使用一些三方日志组件来扩展我们的日志记录。
集成Serilog
三方日志组件有很多,如NLOG,LOG4NET等等,这里个人习惯,使用Serilog。 Serilog的集成方式非常简单。
安装Nuget包
代码语言:javascript复制Serilog.AspNetCore
Serilog.Sinks.Async
Serilog.Sinks.File
在Program中添加代码:
代码语言:javascript复制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将日志写入我们自己的日志系统中。按照实际需求场景配置即可。
轮子仓库地址https://github.com/Wheel-Framework/Wheel