private static string GetLog( LogFormatter formatter, string message, DirectSubmissionLogLevel level, Dictionary <string, string> properties) { var sb = new StringBuilder(); formatter.FormatLog( sb, sb, // not used here DateTime.UtcNow, message, null, level.GetName(), exception: null, RenderPropertiesDelegate); return(sb.ToString()); LogPropertyRenderingDetails RenderPropertiesDelegate(JsonTextWriter writer, in StringBuilder stringBuilder) { foreach (var pair in properties) { writer.WritePropertyName(pair.Key); writer.WriteValue(pair.Value); } return(new LogPropertyRenderingDetails(false, false, false, false, false, false, message)); } }
private ImmutableDirectLogSubmissionSettings( string host, string source, string globalTags, Uri intakeUrl, string apiKey, bool isEnabled, DirectSubmissionLogLevel minimumLevel, bool[] enabledIntegrations, List <string> validationErrors, List <string> enabledIntegrationNames, BatchingSinkOptions batchingOptions) { Host = host; Source = source; GlobalTags = globalTags; IntakeUrl = intakeUrl; ApiKey = apiKey; ValidationErrors = validationErrors; EnabledIntegrationNames = enabledIntegrationNames; MinimumLevel = minimumLevel; _enabledIntegrations = enabledIntegrations; IsEnabled = isEnabled; BatchingOptions = batchingOptions; }
internal DirectSubmissionNLogTarget( IDatadogSink sink, DirectSubmissionLogLevel minimumLevel, LogFormatter?formatter) { _sink = sink; _formatter = formatter; _minimumLevel = (int)minimumLevel; }
internal DirectSubmissionLogger( string name, IExternalScopeProvider?scopeProvider, IDatadogSink sink, LogFormatter?logFormatter, DirectSubmissionLogLevel minimumLogLevel) { _name = name; _scopeProvider = scopeProvider; _sink = sink; _logFormatter = logFormatter; _minimumLogLevel = (int)minimumLogLevel; }
public static DirectSubmissionLog4NetAppender GetAppender(IDatadogSink sink, DirectSubmissionLogLevel level) => new(sink, level);
public static ImmutableDirectLogSubmissionSettings Create( string?host, string?source, string?intakeUrl, string?apiKey, DirectSubmissionLogLevel minimumLevel, IDictionary <string, string> globalTags, ICollection <string> enabledLogShippingIntegrations, BatchingSinkOptions batchingOptions) { if (enabledLogShippingIntegrations.Count == 0) { // not trying to enable log submission, so don't log any errors and create a _null_ implementation return(CreateNullSettings()); } var isEnabled = true; var validationErrors = new List <string>(); if (string.IsNullOrWhiteSpace(host)) { isEnabled = false; validationErrors.Add($"Missing required setting '{ConfigurationKeys.DirectLogSubmission.Host}'."); } if (string.IsNullOrWhiteSpace(source)) { isEnabled = false; validationErrors.Add($"Missing required setting '{ConfigurationKeys.DirectLogSubmission.Source}'."); } if (!Uri.TryCreate(intakeUrl, UriKind.Absolute, out var intakeUri)) { isEnabled = false; validationErrors.Add($"The intake url '{intakeUrl}' was not a valid URL."); } if (string.IsNullOrWhiteSpace(apiKey)) { isEnabled = false; validationErrors.Add($"Missing required settings '{ConfigurationKeys.ApiKey}'."); } var stringifiedTags = StringifyGlobalTags(globalTags); var enabledIntegrations = new bool[IntegrationRegistry.Ids.Count]; var enabledIntegrationNames = new List <string>(SupportedIntegrations.Length); foreach (var integrationName in enabledLogShippingIntegrations) { if (!IntegrationRegistry.TryGetIntegrationId(integrationName, out var integrationId)) { validationErrors.Add( "Unknown integration: " + integrationName + ". Use a valid logs integration name: " + string.Join(", ", SupportedIntegrations.Select(x => IntegrationRegistry.GetName(x)))); continue; } if (!SupportedIntegrations.Contains(integrationId)) { validationErrors.Add( "Integration: " + integrationName + " is not a supported direct log submission integration. " + "Use one of " + string.Join(", ", SupportedIntegrations.Select(x => IntegrationRegistry.GetName(x)))); continue; } if (!enabledIntegrations[(int)integrationId]) { enabledIntegrationNames.Add(IntegrationRegistry.GetName(integrationId)); enabledIntegrations[(int)integrationId] = true; } } return(new ImmutableDirectLogSubmissionSettings( host: host ?? string.Empty, source: source ?? string.Empty, globalTags: stringifiedTags, intakeUrl: intakeUri !, apiKey: apiKey ?? string.Empty, isEnabled: isEnabled, minimumLevel: minimumLevel, enabledIntegrations: enabledIntegrations, validationErrors, enabledIntegrationNames, batchingOptions)); }
public TestLogEvent(DirectSubmissionLogLevel level, string message) { Level = level; Message = message; }
internal DirectSubmissionLog4NetLegacyAppender(IDatadogSink sink, DirectSubmissionLogLevel minimumLevel) { _sink = sink; _minimumLevel = minimumLevel; }
public static string GetName(this DirectSubmissionLogLevel logLevel) => logLevel switch {
public static DirectSubmissionNLogTarget CreateTarget(IDatadogSink sink, DirectSubmissionLogLevel minimumLevel) => new(sink, minimumLevel, LogSettingsHelper.GetFormatter());
internal DirectSubmissionNLogTarget(IDatadogSink sink, DirectSubmissionLogLevel minimumLevel) : this(sink, minimumLevel, formatter : null) { }
internal DirectSubmissionSerilogSink(IDatadogSink sink, DirectSubmissionLogLevel minimumLevel) { _sink = sink; _minimumLevel = (int)minimumLevel; }