public virtual LogEntity Map(LogEvent logEvent)
        {
            var entity = new LogEntity
            {
                Timestamp = logEvent.Timestamp.ToUnixTimeMilliseconds(),
                Level     = logEvent.Level
            };

            entity.Message = logEvent.RenderMessage();

            entity.Exception = FormatException(logEvent.Exception);

            if (logEvent.Properties.TryGetValue(SourceContextPropertyName, out var sourceContext))
            {
                var sourceContextValue = ((ScalarValue)sourceContext).Value.ToString();
                entity.Category = sourceContextValue;
            }

            if (logEvent.Properties.TryGetValue(MachineNamePropertyName, out var machineName))
            {
                var machineNameValue = ((ScalarValue)machineName).Value.ToString();
                entity.Machine = machineNameValue;
            }

            if (logEvent.Properties.TryGetValue(ApplicationPropertyName, out var appName))
            {
                var appNameValue = ((ScalarValue)appName).Value.ToString();
                entity.Application = appNameValue;
            }

            if (logEvent.Properties.TryGetValue(TraceIdPropertyName, out var traceId))
            {
                var traceIdValue = ((ScalarValue)traceId).Value.ToString();
                entity.TraceId = traceIdValue;
            }

            return(entity);
        }
 public abstract byte[] Serialize(LogEntity entity);