diff --git a/src/Elastic.CommonSchema.Serilog/LogEventConverter.cs b/src/Elastic.CommonSchema.Serilog/LogEventConverter.cs index 897b68b7..c6996c1b 100644 --- a/src/Elastic.CommonSchema.Serilog/LogEventConverter.cs +++ b/src/Elastic.CommonSchema.Serilog/LogEventConverter.cs @@ -264,7 +264,13 @@ private static Event GetEvent(LogEvent e) var hasElapsedMs = e.TryGetScalarPropertyValue(SpecialKeys.Elapsed, out var elapsedMsObj) || e.TryGetScalarPropertyValue(SpecialKeys.ElapsedMilliseconds, out elapsedMsObj); - var elapsedMs = hasElapsedMs ? (double?)Convert.ToDouble(elapsedMsObj!.Value) : null; + var elapsedMs = hasElapsedMs ? + elapsedMsObj!.Value is TimeSpan ts + ? ts.TotalMilliseconds + : elapsedMsObj.Value is double d + ? d + : elapsedMsObj.Value is long l ? l : ToDouble() + : null; var evnt = new Event { @@ -300,6 +306,19 @@ private static Event GetEvent(LogEvent e) } return evnt; + + double? ToDouble() + { + try + { + return Convert.ToDouble(elapsedMsObj.Value); + } + catch + { + // ignored + } + return null; + } } private static Agent? GetAgent(LogEvent e)