造轮子之日志
1.Asp.Net Core造轮之旅:逐步构建自己的开发框架-目录2.asp.net core之Startup3.asp.net core之依赖注入4.asp.net core之中间件5.asp.net core之Host6.asp.net core之Kestrel7.asp.net core之配置8.asp.net core之Options9.asp.net core之日志10.asp.net core之路由11.asp.net core之异常处理12.asp.net core之HttpClient13.asp.net core之实时应用14.asp.net core之EfCore15.造轮子之自动依赖注入
16.造轮子之日志
17.造轮子之统一业务异常处理18.造轮子之统一请求响应格式19.造轮子之缓存20.造轮子之ORM集成21.造轮子之asp.net core identity22.造轮子之自定义授权策略23.造轮子之权限管理24.造轮子之多语言管理25.造轮子之角色管理26.造轮子之用户管理27.造轮子之菜单管理28.造轮子之属性注入配合懒加载构建服务抽象基类29.造轮子之EventBus30.造轮子之消息实时推送31.造轮子之种子数据32.造轮子之集成GraphQL33.造轮子之设置管理34.造轮子之文件管理35.造轮子之单层应用总结篇36.单层应用升级到多层应用137.单层应用升级到多层应用238.单层应用升级到多层应用3在日常使用中日志也是我们必不可少的一环,在原生日志组件中支持的日志驱动比较少,所以我们需要使用一些三方日志组件来扩展我们的日志记录。
集成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将日志写入我们自己的日志系统中。按照实际需求场景配置即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?