asp.net-core - Logger Begin Scope 不适合我!.net 核心
问题描述
所以这是我的日志配置:
public static void Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("C:HotelServiceLog.txt")
.CreateLogger();
//Log.Logger = Loggers.NewSerilogLogger(configuration);
try {
Log.Information("Starting up");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex) {
Log.Fatal(ex, "Application start-up failed");
}
finally {
Log.CloseAndFlush();
}
}
我只是想从控制器方法中做到这一点
public async Task<ActionResult<ExpediaRegionsResponse>> GetRegionDescendantsById([FromBody] ExpediaRegionsRequest request) {
try {
using (_logger.BeginScope("Controller Scope")) {
_logger.LogInformation("Controller processing");
}
...
}
}
但这就是我在日志中得到的
2020-12-07 12:09:26.511 -05:00 [INF] Controller processing
2020-12-07 12:09:26.529 -05:00 [INF] Controller processing
有什么我想念的吗?
解决方案
如果你想看到你的内容BeginScope
,你必须先结构化日志。你可以在这篇文章中看到更多的细节。
一些最流行的选项是使用 Kibana 前端将日志存储在 Elastic Search 中,或者使用 Seq。Serilog 日志记录提供程序还支持结构化日志记录,通常用于写入这两个目标。
您正在使用 serilog,这是一个使用 Seq 结构的示例。
1:下载序列。
2:在 Visual Studio 包管理器控制台输入:
Install-Package Serilog.Sinks.Seq -DependencyVersion Highest
Install-Package Serilog.Sinks.Console
3:在您的日志记录配置中:
Log.Logger = new LoggerConfiguration()
//......
.WriteTo.Seq("http://localhost:5341")
//......
4:运行您的项目并执行您的操作。GetRegionDescendantsById
访问 URL http://localhost:5341
。
您可以在此处查看详细信息。
推荐阅读
- fuchsia - 运行此命令“fx set core.qemu-x64”时出错
- sql - 电源查询 API
- javascript - onbeforeunload 不/不正确在 Javascript 中工作
- r - R:for循环仅对最后一个列表元素执行
- python - 批次的 Pytorch 相关矩阵
- java - 有没有办法让这个方法运行两次以上
- apache-spark - 火花凤凰连接
- javascript - 无法在开发模式下运行 ng serve
- rust - 如何获取用于在我的 Rust Tonic 服务中进行身份验证的客户端证书?
- c# - 在 .net core 3.1 的 http 触发函数中添加遥测