学习Serilog日志笔记
本学习笔记所有的.net 版本为6.0
首先引包nuget包为:serilog 和serilog.aspnetcore
1、在控制台下使用日志:
需要引入Serilog.Sinks.Console包
然后在program.cs中写入以下语句:
Log.Logger=new LogerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
Log.Information("hello this is Serilog Log");
Log.CloseAndFlush(); //这句一定要写上
2、在文件中使用日志:
需要引入Serilog.Sinks.File包
然后在program.cs中写入以下语句:
Log.Logger=new LogerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File("Log.txt",rollingInterval:RollingInterval.Day)
.CreateLogger();
Log.Information("hello this is Serilog Log");
Log.CloseAndFlush(); //这句一定要写上
3,基于文本的接收器模板
.WriteTo.File("Log.txt",outputTemplate:"{
Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}" )
4、.同时写入到控制台和文件
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File("log.txt")
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger();
Log.CloseAndFlush();
5、丰富器是添加、删除或修改附加到日志事件的属性的简单组件。例如,这可用于将线程 ID 附加到每个事件。
class ThreadIdEnricher : ILogEventEnricher
{
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
{
logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty(
"ThreadId", Thread.CurrentThread.ManagedThreadId));
}
}
使用配置对象添加丰富器Enrich
。
Log.Logger = new LoggerConfiguration()
.Enrich.With(new ThreadIdEnricher())
.WriteTo.Console(
outputTemplate: "{Timestamp:HH:mm} [{Level}] ({ThreadId}) {Message}{NewLine}{Exception}")
.CreateLogger();
上面的配置显示了如何在输出格式中使用丰富器添加的属性。
如果丰富的属性值在整个应用程序运行过程中保持不变,则WithProperty
可以使用快捷方法来简化配置。
Log.Logger = new LoggerConfiguration()
.Enrich.WithProperty("Version", "1.0.0")
.WriteTo.Console()
.CreateLogger();
丰富器及其附加的属性通常对于使用结构化存储的接收器更有用,可以在其中查看和过滤属性值。
可以通过过滤有选择地记录事件。过滤器只是 的谓词LogEvent
,其中一些常见场景由该类处理Matching
。
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.Filter.ByExcluding(Matching.WithProperty<int>("Count", p => p < 10))
.CreateLogger();
子记录器
有时,需要对接收器所看到的内容进行更精细的控制。为此,Serilog 允许完整的日志管道充当接收器。
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(...)
.WriteTo.File("log.txt"))
.CreateLogger();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库