/// <inheritdoc /> public async Task WriteAsync(ILogPayload payload, CancellationToken cancellationToken = default) { if (payload != null) { var legalityEvents = LogEventSinkFilter.Filter(payload, _sinkConfiguration).ToList(); var logger = TomatoClientManager.Get(); if (logger == null) { return; } foreach (var logEvent in legalityEvents) { LogEventEnricherManager.Enricher(logEvent); var stringBuilder = new StringBuilder(); using (var output = new StringWriter(stringBuilder, _formatProvider)) { logEvent.RenderMessage(output, _sinkConfiguration.Rendering, _formatProvider); } var content = logEvent.ContextData?.ToString(); dynamic dynamicObj = null; if (logEvent.ExtraProperties.Count > 0) { dynamicObj = new ExpandoObject(); foreach (var extra in logEvent.ExtraProperties) { var property = extra.Value; if (property != null) { dynamicObj[property.Name] = property.Value.ToString(); } } } await logger.WriteLogAsync( logEvent.EventId.GetIntegerEventId(), LogLevelSwitcher.Switch(logEvent.Level), stringBuilder.ToString(), content, dynamicObj); } } }