Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

### API breaking Changes

- The method used to configure a Sentry Sink for Serilog now has an additional overload. Calling `WriteTo.Sentry()` with no arguments will no longer attempt to initialize the SDK (it has optional arguments to configure the behaviour of the Sink only). If you want to initialize Sentry at the same time you configure the Sentry Sink then you will need to use the overload of this method that accepts a DSN as the first parameter (e.g. `WriteTo.Sentry("https://d4d82fc1c2c4032a83f3a29aa3a3aff@fake-sentry.io:65535/2147483647")`). ([#2928](https://github.com/getsentry/sentry-dotnet/pull/2928))

#### Removed APIs

- SentrySinkExtensions.ConfigureSentrySerilogOptions is now internal. If you were using this method, please use one of the `SentrySinkExtensions.Sentry` extension methods instead. ([#2902](https://github.com/getsentry/sentry-dotnet/pull/2902))
Expand Down
75 changes: 58 additions & 17 deletions src/Sentry.Serilog/SentrySinkExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace Serilog;
public static class SentrySinkExtensions
{
/// <summary>
/// Add Sentry Serilog Sink.
/// Initialize Sentry and add the SentrySink for Serilog.
/// </summary>
/// <param name="loggerConfiguration">The logger configuration .<seealso cref="LoggerSinkConfiguration"/></param>
/// <param name="dsn">The Sentry DSN. <seealso cref="SentryOptions.Dsn"/></param>
/// <param name="dsn">The Sentry DSN (required). <seealso cref="SentryOptions.Dsn"/></param>
/// <param name="minimumEventLevel">Minimum log level to send an event. <seealso cref="SentrySerilogOptions.MinimumEventLevel"/></param>
/// <param name="minimumBreadcrumbLevel">Minimum log level to record a breadcrumb. <seealso cref="SentrySerilogOptions.MinimumBreadcrumbLevel"/></param>
/// <param name="formatProvider">The Serilog format provider. <seealso cref="IFormatProvider"/></param>
Expand All @@ -34,7 +34,6 @@ public static class SentrySinkExtensions
/// <param name="diagnosticLevel">The diagnostics level to be used. <seealso cref="SentryOptions.DiagnosticLevel"/></param>
/// <param name="reportAssembliesMode">What mode to use for reporting referenced assemblies in each event sent to sentry. Defaults to <see cref="Sentry.ReportAssembliesMode.Version"/></param>
/// <param name="deduplicateMode">What modes to use for event automatic de-duplication. <seealso cref="SentryOptions.DeduplicateMode"/></param>
/// <param name="initializeSdk">Whether to initialize this SDK through this integration. <seealso cref="SentrySerilogOptions.InitializeSdk"/></param>
/// <param name="defaultTags">Defaults tags to add to all events. <seealso cref="SentryOptions.DefaultTags"/></param>
/// <returns><see cref="LoggerConfiguration"/></returns>
/// <example>This sample shows how each item may be set from within a configuration file:
Expand Down Expand Up @@ -69,7 +68,6 @@ public static class SentrySinkExtensions
/// "diagnosticLevel": "Debug",
/// "reportAssembliesMode": ReportAssembliesMode.None,
/// "deduplicateMode": "All",
/// "initializeSdk": true,
/// "defaultTags": {
/// "key-1", "value-1",
/// "key-2", "value-2"
Expand All @@ -83,9 +81,9 @@ public static class SentrySinkExtensions
/// </example>
public static LoggerConfiguration Sentry(
this LoggerSinkConfiguration loggerConfiguration,
string? dsn = null,
LogEventLevel minimumBreadcrumbLevel = LogEventLevel.Information,
LogEventLevel minimumEventLevel = LogEventLevel.Error,
string dsn,
LogEventLevel? minimumBreadcrumbLevel = null,
LogEventLevel? minimumEventLevel = null,
IFormatProvider? formatProvider = null,
ITextFormatter? textFormatter = null,
bool? sendDefaultPii = null,
Expand All @@ -105,7 +103,6 @@ public static LoggerConfiguration Sentry(
SentryLevel? diagnosticLevel = null,
ReportAssembliesMode? reportAssembliesMode = null,
DeduplicateMode? deduplicateMode = null,
bool? initializeSdk = null,
Dictionary<string, string>? defaultTags = null)
{
return loggerConfiguration.Sentry(o => ConfigureSentrySerilogOptions(o,
Expand All @@ -131,13 +128,62 @@ public static LoggerConfiguration Sentry(
diagnosticLevel,
reportAssembliesMode,
deduplicateMode,
initializeSdk,
defaultTags));
}

/// <summary>
/// <para>Adds a Sentry Sink for Serilog.</para>
/// <remarks>
/// Note this overload doesn't initialize Sentry for you, so you'll need to have already done so. Alternatively you
/// can use use the overload of this extension method, passing a DSN string in the first argument.
/// </remarks>
/// </summary>
/// <param name="loggerConfiguration">The logger configuration .<seealso cref="LoggerSinkConfiguration"/></param>
/// <param name="minimumEventLevel">Minimum log level to send an event. <seealso cref="SentrySerilogOptions.MinimumEventLevel"/></param>
/// <param name="minimumBreadcrumbLevel">Minimum log level to record a breadcrumb. <seealso cref="SentrySerilogOptions.MinimumBreadcrumbLevel"/></param>
/// <param name="formatProvider">The Serilog format provider. <seealso cref="IFormatProvider"/></param>
/// <param name="textFormatter">The Serilog text formatter. <seealso cref="ITextFormatter"/></param>
/// <returns><see cref="LoggerConfiguration"/></returns>
/// <example>This sample shows how each item may be set from within a configuration file:
/// <code>
/// {
/// "Serilog": {
/// "Using": [
/// "Serilog",
/// "Sentry",
/// ],
/// "WriteTo": [{
/// "Name": "Sentry",
/// "Args": {
/// "minimumEventLevel": "Error",
/// "minimumBreadcrumbLevel": "Verbose",
/// "outputTemplate": "{Timestamp:o} [{Level:u3}] ({Application}/{MachineName}/{ThreadId}) {Message}{NewLine}{Exception}"///
/// }
/// }
/// ]
/// }
/// }
/// </code>
/// </example>
public static LoggerConfiguration Sentry(
this LoggerSinkConfiguration loggerConfiguration,
LogEventLevel? minimumEventLevel = null,
LogEventLevel? minimumBreadcrumbLevel = null,
IFormatProvider? formatProvider = null,
ITextFormatter? textFormatter = null
)
{
return loggerConfiguration.Sentry(o => ConfigureSentrySerilogOptions(o,
null,
minimumEventLevel,
minimumBreadcrumbLevel,
formatProvider,
textFormatter));
}

internal static void ConfigureSentrySerilogOptions(
SentrySerilogOptions sentrySerilogOptions,
string? dsn = null,
string? dsn,
LogEventLevel? minimumEventLevel = null,
LogEventLevel? minimumBreadcrumbLevel = null,
IFormatProvider? formatProvider = null,
Expand All @@ -159,7 +205,6 @@ internal static void ConfigureSentrySerilogOptions(
SentryLevel? diagnosticLevel = null,
ReportAssembliesMode? reportAssembliesMode = null,
DeduplicateMode? deduplicateMode = null,
bool? initializeSdk = null,
Dictionary<string, string>? defaultTags = null)
{
if (dsn is not null)
Expand Down Expand Up @@ -273,12 +318,8 @@ internal static void ConfigureSentrySerilogOptions(
}

// Serilog-specific items
if (initializeSdk.HasValue)
{
sentrySerilogOptions.InitializeSdk = initializeSdk.Value;
}

if (defaultTags?.Any() == true)
sentrySerilogOptions.InitializeSdk = dsn is not null; // Inferred from the Sentry overload that is used
if (defaultTags?.Count > 0)
{
foreach (var tag in defaultTags)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ namespace Serilog
public static class SentrySinkExtensions
{
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, Serilog.Events.LogEventLevel? minimumEventLevel = default, Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default, System.IFormatProvider? formatProvider = null, Serilog.Formatting.ITextFormatter? textFormatter = null) { }
public static Serilog.LoggerConfiguration Sentry(
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
string? dsn = null,
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
Serilog.Events.LogEventLevel minimumEventLevel = 4,
string dsn,
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
Serilog.Events.LogEventLevel? minimumEventLevel = default,
System.IFormatProvider? formatProvider = null,
Serilog.Formatting.ITextFormatter? textFormatter = null,
bool? sendDefaultPii = default,
Expand All @@ -40,7 +41,6 @@ namespace Serilog
Sentry.SentryLevel? diagnosticLevel = default,
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
Sentry.DeduplicateMode? deduplicateMode = default,
bool? initializeSdk = default,
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ namespace Serilog
public static class SentrySinkExtensions
{
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, Serilog.Events.LogEventLevel? minimumEventLevel = default, Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default, System.IFormatProvider? formatProvider = null, Serilog.Formatting.ITextFormatter? textFormatter = null) { }
public static Serilog.LoggerConfiguration Sentry(
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
string? dsn = null,
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
Serilog.Events.LogEventLevel minimumEventLevel = 4,
string dsn,
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
Serilog.Events.LogEventLevel? minimumEventLevel = default,
System.IFormatProvider? formatProvider = null,
Serilog.Formatting.ITextFormatter? textFormatter = null,
bool? sendDefaultPii = default,
Expand All @@ -40,7 +41,6 @@ namespace Serilog
Sentry.SentryLevel? diagnosticLevel = default,
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
Sentry.DeduplicateMode? deduplicateMode = default,
bool? initializeSdk = default,
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ namespace Serilog
public static class SentrySinkExtensions
{
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, Serilog.Events.LogEventLevel? minimumEventLevel = default, Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default, System.IFormatProvider? formatProvider = null, Serilog.Formatting.ITextFormatter? textFormatter = null) { }
public static Serilog.LoggerConfiguration Sentry(
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
string? dsn = null,
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
Serilog.Events.LogEventLevel minimumEventLevel = 4,
string dsn,
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
Serilog.Events.LogEventLevel? minimumEventLevel = default,
System.IFormatProvider? formatProvider = null,
Serilog.Formatting.ITextFormatter? textFormatter = null,
bool? sendDefaultPii = default,
Expand All @@ -40,7 +41,6 @@ namespace Serilog
Sentry.SentryLevel? diagnosticLevel = default,
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
Sentry.DeduplicateMode? deduplicateMode = default,
bool? initializeSdk = default,
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ namespace Serilog
public static class SentrySinkExtensions
{
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, Serilog.Events.LogEventLevel? minimumEventLevel = default, Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default, System.IFormatProvider? formatProvider = null, Serilog.Formatting.ITextFormatter? textFormatter = null) { }
public static Serilog.LoggerConfiguration Sentry(
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
string? dsn = null,
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
Serilog.Events.LogEventLevel minimumEventLevel = 4,
string dsn,
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
Serilog.Events.LogEventLevel? minimumEventLevel = default,
System.IFormatProvider? formatProvider = null,
Serilog.Formatting.ITextFormatter? textFormatter = null,
bool? sendDefaultPii = default,
Expand All @@ -40,7 +41,6 @@ namespace Serilog
Sentry.SentryLevel? diagnosticLevel = default,
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
Sentry.DeduplicateMode? deduplicateMode = default,
bool? initializeSdk = default,
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
}
}
Loading