in src/Elastic.CommonSchema.Serilog/LogEventConverter.cs [250:291]
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 evnt = new Event
{
Created = e.Timestamp,
Category = e.TryGetScalarString(SpecialKeys.ActionCategory, out var actionCategory)
? new[] { actionCategory }
: null,
Action = e.TryGetScalarString(SpecialKeys.ActionName, out var action)
? action
: null,
Id = e.TryGetScalarString(SpecialKeys.ActionId, out var actionId)
? actionId
: null,
Kind = e.TryGetScalarString(SpecialKeys.ActionKind, out var actionKind) ? actionKind : null,
Severity = e.TryGetScalarString(SpecialKeys.ActionSeverity, out var actionSev)
? long.Parse(actionSev)
: (int)e.Level,
Timezone = TimeZoneInfo.Local.StandardName,
Duration = elapsedMs != null ? (long)(elapsedMs * 1000000) : null
};
if (e.Properties.TryGetValue(SpecialKeys.EventId, out var eventData) && eventData is StructureValue dv)
{
var idProp = dv.Properties.FirstOrDefault(p => p.Name == "Id");
var eventId = idProp?.Value is ScalarValue i ? i.Value as int? : null;
if (eventId != null)
evnt.Code = eventId.ToString();
var nameProp = dv.Properties.FirstOrDefault(p => p.Name == "Name");
var eventAction = nameProp?.Value is ScalarValue n ? n.Value as string : null;
if (eventAction != null)
evnt.Action = eventAction;
}
return evnt;
}