public LogEvent(DateTimeOffset timestamp, LogEventLevel level, Exception exception, MessageTemplate messageTemplate, IEnumerable<LogEventProperty> properties)
{
if (messageTemplate == null) throw new ArgumentNullException(nameof(messageTemplate));
if (properties == null) throw new ArgumentNullException(nameof(properties));
Timestamp = timestamp;
Level = level;
Exception = exception;
MessageTemplate = messageTemplate;
_properties = new Dictionary<string, LogEventPropertyValue>();
foreach (var p in properties)
AddOrUpdateProperty(p);
}