public static Base ConvertToEcs(LogEvent logEvent, IEcsTextFormatterConfiguration configuration) { var exceptions = logEvent.Exception != null ? new List <Exception> { logEvent.Exception } : new List <Exception>(); if (configuration.MapHttpAdapter != null) { exceptions.AddRange(configuration.MapHttpAdapter.Exceptions); } var ecsEvent = new Base { Timestamp = logEvent.Timestamp, Ecs = new Ecs { Version = Base.Version }, Log = GetLog(logEvent, exceptions, configuration), Agent = GetAgent(logEvent), Event = GetEvent(logEvent), Metadata = GetMetadata(logEvent), Process = GetProcess(logEvent, configuration.MapCurrentThread), Host = GetHost(logEvent), Trace = GetTrace(logEvent), Transaction = GetTransaction(logEvent) }; if (configuration.MapHttpAdapter != null) { ecsEvent.Http = configuration.MapHttpAdapter.Http; ecsEvent.Server = GetServer(logEvent, configuration); ecsEvent.Url = configuration.MapHttpAdapter.Url; ecsEvent.UserAgent = configuration.MapHttpAdapter.UserAgent; ecsEvent.Client = configuration.MapHttpAdapter.Client; ecsEvent.User = configuration.MapHttpAdapter.User; } if (configuration.MapExceptions) { ecsEvent.Error = GetError(exceptions); } if (configuration.MapCustom != null) { ecsEvent = configuration.MapCustom(ecsEvent, logEvent); } ecsEvent.Message = logEvent.RenderMessage(); return(ecsEvent); }
private static Server GetServer(LogEvent e, IEcsTextFormatterConfiguration configuration) { var server = configuration.MapHttpAdapter?.Server ?? new Server(); server.User = e.TryGetScalarPropertyValue(SpecialKeys.EnvironmentUserName, out var environmentUserName) ? new User { Name = environmentUserName.Value.ToString() } : null; var hasHost = e.TryGetScalarPropertyValue(SpecialKeys.Host, out var host); server.Address = hasHost ? host.Value.ToString() : null; return(server); }