コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }