Serilog 时间戳不匹配?

Serilog timestamp missmatch?

提问人:Banshee 提问时间:11/17/2023 更新时间:11/17/2023 访问量:10

问:

我有几个 .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 中出现,因此我怀疑这是问题所在。

是否有内置的解决方案?否则,我将不得不在重新创建后构建自定义格式化程序或操纵时间。

C# 序列 Serilog

评论


答: 暂无答案