提问人:Banshee 提问时间:11/17/2023 更新时间:11/17/2023 访问量:10
Serilog 时间戳不匹配?
Serilog timestamp missmatch?
问:
我有几个 .NET 服务使用 Serilog 将数据记录到 SEQ。一些服务位于本地,因此它们直接登录到 SEQ。其他服务无法访问 SEQ,因此需要先将 LogEvent 发送到我网络中的 LogService。
问题在于时间戳不正确,因此某些日志在 SEQ 中未按正确的顺序显示。
外部服务将 LogEvent 转换为 JSON,如下所示:
var jsonFormatter = new CompactJsonFormatter();
var stringWriter = new StringWriter();
jsonFormatter.Format(logEvent, stringWriter);
var jsonLogEvent = stringWriter.ToString();
LogService 将 JSON 转换为 LogEvent,如下所示:
var stringReader = new StringReader(jsonLogEvent);
var logEventReader = new LogEventReader(stringReader);
logEventReader.TryRead(out LogEvent deserializedLogEvent);
我可以看到 CompactJsonFormatter.Format 在将其转换为 UTC 时会更改时间,并且此更改会在重新创建的 LogEvent 中出现,因此我怀疑这是问题所在。
是否有内置的解决方案?否则,我将不得不在重新创建后构建自定义格式化程序或操纵时间。
答: 暂无答案
评论