SourceContext 的 Serilog 记录器配置
Serilog logger configuration by SourceContext
我正在尝试在一个小示例项目中实现 serilog。到目前为止我做了以下事情:
- 创建新的 ASP.NET 核心 Web 应用程序 (MVC)
- 安装包 Serilog.AspNetCore
- 安装包Serilog.Sinks.File
- 安装包Serilog.Formatting.Compact
- 关注 this 博文
- 尝试关注 this 博文
我的问题:
是否可以根据 CategoryName(在我的例子中 "MyLogger")配置两个不同的记录器?我希望此记录器使用与我的默认记录器不同的文件。在我的快乐世界幻想中,它看起来像:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\standardLog.txt")
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\specialLog.txt").Filter.ByIncludingOnly(x => x.SourceContext("MySpecialLogger")
.CreateLogger();
如果我创建一个新的记录器 var logger = _loggerFactory.CreateLogger("MySpecialLogger");
,日志将保存在我的 specialLog.txt 文件中。
有什么想法吗?
为此你需要Serilog.Sinks.Map。
dotnet add <PROJECT> package Serilog.Sinks.Map -v 1.0.0-dev-00012
然后:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.Map("SourceContext", null, (sc, wt) =>
wt.File(new CompactJsonFormatter(), sc == "MySpecialLogger" ?
@"C:\temp\specialLog.txt" :
@"C:\temp\standardLog.txt"))
.CreateLogger();
我正在尝试在一个小示例项目中实现 serilog。到目前为止我做了以下事情:
- 创建新的 ASP.NET 核心 Web 应用程序 (MVC)
- 安装包 Serilog.AspNetCore
- 安装包Serilog.Sinks.File
- 安装包Serilog.Formatting.Compact
- 关注 this 博文
- 尝试关注 this 博文
我的问题:
是否可以根据 CategoryName(在我的例子中 "MyLogger")配置两个不同的记录器?我希望此记录器使用与我的默认记录器不同的文件。在我的快乐世界幻想中,它看起来像:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\standardLog.txt")
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\specialLog.txt").Filter.ByIncludingOnly(x => x.SourceContext("MySpecialLogger")
.CreateLogger();
如果我创建一个新的记录器 var logger = _loggerFactory.CreateLogger("MySpecialLogger");
,日志将保存在我的 specialLog.txt 文件中。
有什么想法吗?
为此你需要Serilog.Sinks.Map。
dotnet add <PROJECT> package Serilog.Sinks.Map -v 1.0.0-dev-00012
然后:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.Map("SourceContext", null, (sc, wt) =>
wt.File(new CompactJsonFormatter(), sc == "MySpecialLogger" ?
@"C:\temp\specialLog.txt" :
@"C:\temp\standardLog.txt"))
.CreateLogger();