c# - Serilog ThreadId 始终输出为 1
问题描述
我在 outputTemplate 中有一个 ThreadId,但日志始终将其记录为 1。我有多个应用程序实例同时运行到同一个日志中,因此希望我可以根据 ThreadId 分离实例。
谁能建议如何解决这个问题?ThreadName 在应用程序设置一些东西并识别它正在运行的区域后被分配,因此不是最好的分隔符。也可以在一个区域内同时运行多个功能。因此需要 ThreadId
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Build())
.Enrich.FromLogContext()
.Enrich.WithThreadId()
.Enrich.WithThreadName()
.WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] <{ThreadName}> <{ThreadId}> {Message:lj}{NewLine}{Exception}")
.WriteTo.File(@".\log\log.txt",
rollingInterval: RollingInterval.Day,
shared: true,
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] <{ThreadName}> <{ThreadId}> {Message:lj}{NewLine}{Exception}")
.CreateLogger();
日志输出
2021-04-09 06:30:09.059 [INF] <blackstone> <1> Action : Task A
2021-04-09 06:30:09.059 [INF] <wavell> <1> Action : Task A
2021-04-09 06:30:09.060 [INF] <forest> <1> Action : Task A
2021-04-09 06:30:09.130 [INF] <wavell> <1> Loading CentreDetails
2021-04-09 06:30:09.130 [INF] <forest> <1> Loading CentreDetails
2021-04-09 06:30:09.132 [INF] <blackstone> <1> Loading CentreDetails
2021-04-09 06:30:09.560 [INF] <wavell> <1> Loading ParentDetails
2021-04-09 06:30:09.554 [INF] <blackstone> <1> Loading ParentDetails
2021-04-09 06:30:09.560 [INF] <forest> <1> Loading ParentDetails
解决方案
听起来你想要Serilog.Enrichers.Process
而Enrich.WithProcessId()
不是WithThreadId()
.
推荐阅读
- php - 在第 4 行的 C:\Users\Logan\Cart\bootstrap\app.php 中的 bootstrap\app.php:4 #1 {main} 中找不到类 'app'
- r - 从深度嵌套的子目录中读取文件,并用 R 中的子目录全路径名重命名它们
- c - 仅使用套接字实现单进程管道
- dsl - Xtext DSL 编辑器引用了我的模型中定义的 Java 类
- python - 确定文本语言和纠正 Python 中的拼写错误的最佳算法是什么?
- c# - 我怎样才能扔掉捡到的物体?
- react-native - 如何使用 useFocusEffect 挂钩
- google-my-business-api - 无法获取任何帐户信息或评论信息
- spatial - 如何在适合逻辑回归正交方案的泊松品脱过程模型中包含调查权重?
- css - Flexbox 父级比其子级高