in src/Elastic.CommonSchema.NLog/EcsLayout.cs [662:685]
private Host GetHost(LogEventInfo logEventInfo, Host defaultHost)
{
var hostId = HostId?.Render(logEventInfo);
var hostName = HostName?.Render(logEventInfo);
var hostIp = HostIp?.Render(logEventInfo);
var previousHost = _previousHost ?? defaultHost;
if ((string.IsNullOrEmpty(hostId) || hostId == previousHost?.Id)
&& (string.IsNullOrEmpty(hostName) || hostName == previousHost?.Hostname)
&& (string.IsNullOrEmpty(hostIp) || (previousHost?.Ip?.Length == 1 && hostIp == previousHost.Ip[0])))
return previousHost;
var host = new Host
{
Id = string.IsNullOrEmpty(hostId) ? previousHost?.Id : hostId,
Hostname = string.IsNullOrEmpty(hostName) ? previousHost?.Hostname : hostName,
Ip = string.IsNullOrEmpty(hostIp) ? previousHost?.Ip : new[] { hostIp },
Type = previousHost?.Type,
Architecture = previousHost?.Architecture,
Os = previousHost?.Os,
};
_previousHost = host;
return host;
}