Skip to content

Commit 351adea

Browse files
Added non-initialising overload to SerilogSinkExtensions (#2928)
1 parent 13c3ee9 commit 351adea

7 files changed

+101
-76
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
### API breaking Changes
2727

28+
- 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://[email protected]:65535/2147483647")`). ([#2928](https://github.com/getsentry/sentry-dotnet/pull/2928))
29+
2830
#### Removed APIs
2931

3032
- 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))

src/Sentry.Serilog/SentrySinkExtensions.cs

Lines changed: 58 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ namespace Serilog;
99
public static class SentrySinkExtensions
1010
{
1111
/// <summary>
12-
/// Add Sentry Serilog Sink.
12+
/// Initialize Sentry and add the SentrySink for Serilog.
1313
/// </summary>
1414
/// <param name="loggerConfiguration">The logger configuration .<seealso cref="LoggerSinkConfiguration"/></param>
15-
/// <param name="dsn">The Sentry DSN. <seealso cref="SentryOptions.Dsn"/></param>
15+
/// <param name="dsn">The Sentry DSN (required). <seealso cref="SentryOptions.Dsn"/></param>
1616
/// <param name="minimumEventLevel">Minimum log level to send an event. <seealso cref="SentrySerilogOptions.MinimumEventLevel"/></param>
1717
/// <param name="minimumBreadcrumbLevel">Minimum log level to record a breadcrumb. <seealso cref="SentrySerilogOptions.MinimumBreadcrumbLevel"/></param>
1818
/// <param name="formatProvider">The Serilog format provider. <seealso cref="IFormatProvider"/></param>
@@ -34,7 +34,6 @@ public static class SentrySinkExtensions
3434
/// <param name="diagnosticLevel">The diagnostics level to be used. <seealso cref="SentryOptions.DiagnosticLevel"/></param>
3535
/// <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>
3636
/// <param name="deduplicateMode">What modes to use for event automatic de-duplication. <seealso cref="SentryOptions.DeduplicateMode"/></param>
37-
/// <param name="initializeSdk">Whether to initialize this SDK through this integration. <seealso cref="SentrySerilogOptions.InitializeSdk"/></param>
3837
/// <param name="defaultTags">Defaults tags to add to all events. <seealso cref="SentryOptions.DefaultTags"/></param>
3938
/// <returns><see cref="LoggerConfiguration"/></returns>
4039
/// <example>This sample shows how each item may be set from within a configuration file:
@@ -69,7 +68,6 @@ public static class SentrySinkExtensions
6968
/// "diagnosticLevel": "Debug",
7069
/// "reportAssembliesMode": ReportAssembliesMode.None,
7170
/// "deduplicateMode": "All",
72-
/// "initializeSdk": true,
7371
/// "defaultTags": {
7472
/// "key-1", "value-1",
7573
/// "key-2", "value-2"
@@ -83,9 +81,9 @@ public static class SentrySinkExtensions
8381
/// </example>
8482
public static LoggerConfiguration Sentry(
8583
this LoggerSinkConfiguration loggerConfiguration,
86-
string? dsn = null,
87-
LogEventLevel minimumBreadcrumbLevel = LogEventLevel.Information,
88-
LogEventLevel minimumEventLevel = LogEventLevel.Error,
84+
string dsn,
85+
LogEventLevel? minimumBreadcrumbLevel = null,
86+
LogEventLevel? minimumEventLevel = null,
8987
IFormatProvider? formatProvider = null,
9088
ITextFormatter? textFormatter = null,
9189
bool? sendDefaultPii = null,
@@ -105,7 +103,6 @@ public static LoggerConfiguration Sentry(
105103
SentryLevel? diagnosticLevel = null,
106104
ReportAssembliesMode? reportAssembliesMode = null,
107105
DeduplicateMode? deduplicateMode = null,
108-
bool? initializeSdk = null,
109106
Dictionary<string, string>? defaultTags = null)
110107
{
111108
return loggerConfiguration.Sentry(o => ConfigureSentrySerilogOptions(o,
@@ -131,13 +128,62 @@ public static LoggerConfiguration Sentry(
131128
diagnosticLevel,
132129
reportAssembliesMode,
133130
deduplicateMode,
134-
initializeSdk,
135131
defaultTags));
136132
}
137133

134+
/// <summary>
135+
/// <para>Adds a Sentry Sink for Serilog.</para>
136+
/// <remarks>
137+
/// Note this overload doesn't initialize Sentry for you, so you'll need to have already done so. Alternatively you
138+
/// can use use the overload of this extension method, passing a DSN string in the first argument.
139+
/// </remarks>
140+
/// </summary>
141+
/// <param name="loggerConfiguration">The logger configuration .<seealso cref="LoggerSinkConfiguration"/></param>
142+
/// <param name="minimumEventLevel">Minimum log level to send an event. <seealso cref="SentrySerilogOptions.MinimumEventLevel"/></param>
143+
/// <param name="minimumBreadcrumbLevel">Minimum log level to record a breadcrumb. <seealso cref="SentrySerilogOptions.MinimumBreadcrumbLevel"/></param>
144+
/// <param name="formatProvider">The Serilog format provider. <seealso cref="IFormatProvider"/></param>
145+
/// <param name="textFormatter">The Serilog text formatter. <seealso cref="ITextFormatter"/></param>
146+
/// <returns><see cref="LoggerConfiguration"/></returns>
147+
/// <example>This sample shows how each item may be set from within a configuration file:
148+
/// <code>
149+
/// {
150+
/// "Serilog": {
151+
/// "Using": [
152+
/// "Serilog",
153+
/// "Sentry",
154+
/// ],
155+
/// "WriteTo": [{
156+
/// "Name": "Sentry",
157+
/// "Args": {
158+
/// "minimumEventLevel": "Error",
159+
/// "minimumBreadcrumbLevel": "Verbose",
160+
/// "outputTemplate": "{Timestamp:o} [{Level:u3}] ({Application}/{MachineName}/{ThreadId}) {Message}{NewLine}{Exception}"///
161+
/// }
162+
/// }
163+
/// ]
164+
/// }
165+
/// }
166+
/// </code>
167+
/// </example>
168+
public static LoggerConfiguration Sentry(
169+
this LoggerSinkConfiguration loggerConfiguration,
170+
LogEventLevel? minimumEventLevel = null,
171+
LogEventLevel? minimumBreadcrumbLevel = null,
172+
IFormatProvider? formatProvider = null,
173+
ITextFormatter? textFormatter = null
174+
)
175+
{
176+
return loggerConfiguration.Sentry(o => ConfigureSentrySerilogOptions(o,
177+
null,
178+
minimumEventLevel,
179+
minimumBreadcrumbLevel,
180+
formatProvider,
181+
textFormatter));
182+
}
183+
138184
internal static void ConfigureSentrySerilogOptions(
139185
SentrySerilogOptions sentrySerilogOptions,
140-
string? dsn = null,
186+
string? dsn,
141187
LogEventLevel? minimumEventLevel = null,
142188
LogEventLevel? minimumBreadcrumbLevel = null,
143189
IFormatProvider? formatProvider = null,
@@ -159,7 +205,6 @@ internal static void ConfigureSentrySerilogOptions(
159205
SentryLevel? diagnosticLevel = null,
160206
ReportAssembliesMode? reportAssembliesMode = null,
161207
DeduplicateMode? deduplicateMode = null,
162-
bool? initializeSdk = null,
163208
Dictionary<string, string>? defaultTags = null)
164209
{
165210
if (dsn is not null)
@@ -273,12 +318,8 @@ internal static void ConfigureSentrySerilogOptions(
273318
}
274319

275320
// Serilog-specific items
276-
if (initializeSdk.HasValue)
277-
{
278-
sentrySerilogOptions.InitializeSdk = initializeSdk.Value;
279-
}
280-
281-
if (defaultTags?.Any() == true)
321+
sentrySerilogOptions.InitializeSdk = dsn is not null; // Inferred from the Sentry overload that is used
322+
if (defaultTags?.Count > 0)
282323
{
283324
foreach (var tag in defaultTags)
284325
{

test/Sentry.Serilog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ namespace Serilog
1616
public static class SentrySinkExtensions
1717
{
1818
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
19+
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) { }
1920
public static Serilog.LoggerConfiguration Sentry(
2021
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
21-
string? dsn = null,
22-
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
23-
Serilog.Events.LogEventLevel minimumEventLevel = 4,
22+
string dsn,
23+
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
24+
Serilog.Events.LogEventLevel? minimumEventLevel = default,
2425
System.IFormatProvider? formatProvider = null,
2526
Serilog.Formatting.ITextFormatter? textFormatter = null,
2627
bool? sendDefaultPii = default,
@@ -40,7 +41,6 @@ namespace Serilog
4041
Sentry.SentryLevel? diagnosticLevel = default,
4142
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
4243
Sentry.DeduplicateMode? deduplicateMode = default,
43-
bool? initializeSdk = default,
4444
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
4545
}
4646
}

test/Sentry.Serilog.Tests/ApiApprovalTests.Run.DotNet7_0.verified.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ namespace Serilog
1616
public static class SentrySinkExtensions
1717
{
1818
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
19+
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) { }
1920
public static Serilog.LoggerConfiguration Sentry(
2021
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
21-
string? dsn = null,
22-
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
23-
Serilog.Events.LogEventLevel minimumEventLevel = 4,
22+
string dsn,
23+
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
24+
Serilog.Events.LogEventLevel? minimumEventLevel = default,
2425
System.IFormatProvider? formatProvider = null,
2526
Serilog.Formatting.ITextFormatter? textFormatter = null,
2627
bool? sendDefaultPii = default,
@@ -40,7 +41,6 @@ namespace Serilog
4041
Sentry.SentryLevel? diagnosticLevel = default,
4142
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
4243
Sentry.DeduplicateMode? deduplicateMode = default,
43-
bool? initializeSdk = default,
4444
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
4545
}
4646
}

test/Sentry.Serilog.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ namespace Serilog
1616
public static class SentrySinkExtensions
1717
{
1818
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
19+
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) { }
1920
public static Serilog.LoggerConfiguration Sentry(
2021
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
21-
string? dsn = null,
22-
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
23-
Serilog.Events.LogEventLevel minimumEventLevel = 4,
22+
string dsn,
23+
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
24+
Serilog.Events.LogEventLevel? minimumEventLevel = default,
2425
System.IFormatProvider? formatProvider = null,
2526
Serilog.Formatting.ITextFormatter? textFormatter = null,
2627
bool? sendDefaultPii = default,
@@ -40,7 +41,6 @@ namespace Serilog
4041
Sentry.SentryLevel? diagnosticLevel = default,
4142
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
4243
Sentry.DeduplicateMode? deduplicateMode = default,
43-
bool? initializeSdk = default,
4444
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
4545
}
4646
}

test/Sentry.Serilog.Tests/ApiApprovalTests.Run.Net4_8.verified.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ namespace Serilog
1616
public static class SentrySinkExtensions
1717
{
1818
public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action<Sentry.Serilog.SentrySerilogOptions> configureOptions) { }
19+
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) { }
1920
public static Serilog.LoggerConfiguration Sentry(
2021
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
21-
string? dsn = null,
22-
Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2,
23-
Serilog.Events.LogEventLevel minimumEventLevel = 4,
22+
string dsn,
23+
Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default,
24+
Serilog.Events.LogEventLevel? minimumEventLevel = default,
2425
System.IFormatProvider? formatProvider = null,
2526
Serilog.Formatting.ITextFormatter? textFormatter = null,
2627
bool? sendDefaultPii = default,
@@ -40,7 +41,6 @@ namespace Serilog
4041
Sentry.SentryLevel? diagnosticLevel = default,
4142
Sentry.ReportAssembliesMode? reportAssembliesMode = default,
4243
Sentry.DeduplicateMode? deduplicateMode = default,
43-
bool? initializeSdk = default,
4444
System.Collections.Generic.Dictionary<string, string>? defaultTags = null) { }
4545
}
4646
}

0 commit comments

Comments
 (0)