/// <inheritdoc /> public async Task WriteAsync(ILogPayload payload, CancellationToken cancellationToken = default) { if (payload != null) { var legalityEvents = LogEventSinkFilter.Filter(payload, _sinkConfiguration).ToList(); var logger = AliyunSlsClientManager.GetSlsClient(payload.Name, out var logStoreName); if (logger == null || string.IsNullOrWhiteSpace(logStoreName)) { return; } var aliyunLogGroup = new AliyunLogGroup { Source = payload.SourceType.FullName, Topic = payload.Name, }; 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 aliyunLogInfo = new AliyunLogInfo { Contents = { { MessageBody, stringBuilder.ToString() } }, Time = logEvent.Timestamp }; if (logEvent.ExtraProperties.Count > 0) { foreach (var extra in logEvent.ExtraProperties) { var property = extra.Value; if (property != null && 0 != string.Compare(property.Name, MessageBody, StringComparison.OrdinalIgnoreCase)) { aliyunLogInfo.Contents.Add(property.Name, property.Value.ToString()); } } } aliyunLogGroup.Logs.Add(aliyunLogInfo); } var response = await logger.PostLogStoreLogsAsync(new PostLogsRequest(logStoreName, aliyunLogGroup)); ProcessError(response); } }
private static void RegisterAliyunSlsClients(AliyunSlsSinkOptions options) { if (!options.HasLegalNativeConfig(false)) { throw new InvalidOperationException("There is no legal Alibaba Cloud (Aliyun) SLS native config."); } if (options.AliyunSlsNativeConfigs.Any()) { foreach (var kvp in options.AliyunSlsNativeConfigs) { AliyunSlsClientManager.SetSlsClient(kvp.Key, kvp.Value); } } else { AliyunSlsClientManager.SetSlsClient(Constants.DefaultClient, options.LogStoreName, options.EndPoint, options.ProjectName, options.AccessKeyId, options.AccessKey, true); } }