private static Event GetEvent()

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;
		}