diff --git a/docs/platforms/dotnet/common/logs/index.mdx b/docs/platforms/dotnet/common/logs/index.mdx index ed67f09446c9ee..df9063d7916a4a 100644 --- a/docs/platforms/dotnet/common/logs/index.mdx +++ b/docs/platforms/dotnet/common/logs/index.mdx @@ -7,7 +7,6 @@ notSupported: - dotnet.google-cloud-functions - dotnet.log4net - dotnet.nlog - - dotnet.serilog - dotnet.xamarin --- diff --git a/docs/platforms/dotnet/guides/serilog/index.mdx b/docs/platforms/dotnet/guides/serilog/index.mdx index bb96fcf6236a73..b9fc0ad6c85aa7 100644 --- a/docs/platforms/dotnet/guides/serilog/index.mdx +++ b/docs/platforms/dotnet/guides/serilog/index.mdx @@ -9,7 +9,8 @@ Sentry provides an integration with `Serilog` through the [Sentry.Serilog NuGet ## Overview of the features - Store log messages as breadcrumbs -- Send events to sentry +- Send events to Sentry +- Send structured logs to Sentry Two separate settings define the minimum log level to keep the log entry as a `Breadcrumb` and to send an `Event` to Sentry. The events include any stored breadcrumb on that [scope](enriching-events/scopes/). @@ -19,6 +20,8 @@ The default value to report a log entry as an event to Sentry is `Error`. This means that out of the box, any `LogError` call will create an `Event` which will include all log messages of level `Information`, `Warning` and also `Error` and `Critical`. +Additionally, when enabled, log messages are sent to Sentry as [Structured Logs](logs/). + ## Install Add the Sentry dependency: diff --git a/docs/product/explore/logs/getting-started/index.mdx b/docs/product/explore/logs/getting-started/index.mdx index 36e31497155b35..17add3af9e0092 100644 --- a/docs/product/explore/logs/getting-started/index.mdx +++ b/docs/product/explore/logs/getting-started/index.mdx @@ -268,6 +268,11 @@ To set up Sentry Logs, use the links below for supported SDKs. After it's been s label="Microsoft.Extensions.Logging" url="/platforms/dotnet/guides/extensions-logging/logs/" /> +- ## Upcoming SDKs diff --git a/platform-includes/logs/integrations/dotnet.mdx b/platform-includes/logs/integrations/dotnet.mdx index e39212ae4540cf..7dfdde786c31cb 100644 --- a/platform-includes/logs/integrations/dotnet.mdx +++ b/platform-includes/logs/integrations/dotnet.mdx @@ -2,5 +2,6 @@ Available integrations: - [ASP.NET Core](/platforms/dotnet/guides/aspnetcore/logs/) - [.NET Multi-platform App UI (.NET MAUI)](/platforms/dotnet/guides/maui/logs/) - [Microsoft.Extensions.Logging](/platforms/dotnet/guides/extensions-logging/logs/) +- [Serilog](/platforms/dotnet/guides/serilog/logs/) If there's an integration you would like to see, open a [new issue on GitHub](https://github.com/getsentry/sentry-dotnet/issues/new/choose). diff --git a/platform-includes/logs/options/dotnet.mdx b/platform-includes/logs/options/dotnet.mdx index 54dc0fb21f41c1..59324b86c013da 100644 --- a/platform-includes/logs/options/dotnet.mdx +++ b/platform-includes/logs/options/dotnet.mdx @@ -1,6 +1,16 @@ #### Experimental.EnableLogs -Set to `true` in order to enable the `SentrySdk.Experimental.Logger` APIs, as well as logging integrations via the `ILogger` API. + +Set to `true` in order to enable the `SentrySdk.Experimental.Logger` APIs. + + + +Set to `true` in order to enable the logging integration via the `ILogger` API. + + + +Set to `true` in order to enable the logging integration via the `Log`/`Logger` APIs. + #### Experimental.SetBeforeSendLog diff --git a/platform-includes/logs/requirements/dotnet.mdx b/platform-includes/logs/requirements/dotnet.mdx index 0df8ad43b5734f..c8727f8f7f4e15 100644 --- a/platform-includes/logs/requirements/dotnet.mdx +++ b/platform-includes/logs/requirements/dotnet.mdx @@ -1 +1,7 @@ -Logs for .NET are supported in Sentry .NET SDK version `5.14.0` and above. + +Logs for are supported in Sentry SDK version `5.14.0` and above. + + + +Logs for are supported in Sentry SDK version `5.15.0` and above. + diff --git a/platform-includes/logs/setup/dotnet.mdx b/platform-includes/logs/setup/dotnet.mdx index 9ebb12aaaa7410..29da2b2c311d4a 100644 --- a/platform-includes/logs/setup/dotnet.mdx +++ b/platform-includes/logs/setup/dotnet.mdx @@ -1,6 +1,6 @@ To enable logging, you need to initialize the SDK with the `Experimental.EnableLogs` option set to `true`. - + ```csharp SentrySdk.Init(options => @@ -53,3 +53,16 @@ SentrySdk.Init(options => ``` + + + +```csharp +.WriteTo.Sentry(options => +{ + options.Dsn = "___PUBLIC_DSN___"; + // Enable logs to be sent to Sentry + options.Experimental.EnableLogs = true; +}); +``` + + diff --git a/platform-includes/logs/usage/dotnet.mdx b/platform-includes/logs/usage/dotnet.mdx index a0c85153906938..ccd9f96bf59b0b 100644 --- a/platform-includes/logs/usage/dotnet.mdx +++ b/platform-includes/logs/usage/dotnet.mdx @@ -1,4 +1,4 @@ - + Once the feature is enabled on the SDK and the SDK is initialized, you can send logs using the `SentrySdk.Experimental.Logger` APIs. @@ -8,7 +8,7 @@ These properties will be sent to Sentry, and can be searched from within the Log ```csharp SentrySdk.Experimental.Logger.LogInfo("A simple log message"); -SentrySdk.Experimental.Logger.LogError("A {0} log message", ["formatted"]); +SentrySdk.Experimental.Logger.LogError("A {0} log message", "formatted"); ``` @@ -27,12 +27,12 @@ The `LoggerExtensions` extension methods expose various overloads that you can u | Microsoft.Extensions.Logging.LogLevel | Sentry.SentryLogLevel | Sentry Logs UI Severity | | --- | --- | --- | -| Trace | Trace | TRACE | -| Debug | Debug | DEBUG | -| Information | Info | INFO | -| Warning | Warning | WARN | -| Error | Error | ERROR | -| Critical | Fatal | FATAL | +| Trace | Trace | trace | +| Debug | Debug | debug | +| Information | Info | info | +| Warning | Warning | warn | +| Error | Error | error | +| Critical | Fatal | fatal | These properties will be sent to Sentry, and can be searched from within the Logs UI, and even added to the Logs views as a dedicated column. @@ -55,22 +55,48 @@ Sentry Structured Logs also work with [High-performance logging in .NET](https:/ - + + +Once the feature is enabled on the SDK and the SDK is initialized, you can send logs using the _Serilog_ APIs. + +The static `Log` and instance `Logger` types expose various methods that you can use to log messages at six different log levels automatically mapped to Sentry's severity: + +| Serilog.Events.LogEventLevel | Sentry.SentryLogLevel | Sentry Logs UI Severity | +| --- | --- | --- | +| Verbose | Trace | trace | +| Debug | Debug | debug | +| Information | Info | info | +| Warning | Warning | warn | +| Error | Error | error | +| Fatal | Fatal | fatal | + +These properties will be sent to Sentry, and can be searched from within the Logs UI, and even added to the Logs views as a dedicated column. + +```csharp +using (LogContext.PushProperty("Version", 5150)) +{ + Log.Information("A simple log message"); + Log.Error("A {Parameter} log message", "formatted"); + Log.ForContext("Property", "Value").Warning("Message with Property"); +} +``` + +The _Enrichments_ of _log events_ are attached as attributes to the logs, alongside a set of default attributes automatically provided by the SDK. + + + + The SDK automatically provides a set of default attributes attached to your logs. Additionally, you can attach custom attributes via a delegate. ```csharp -SentrySdk.Experimental.Logger.LogWarning("A log message with additional attributes.", [], static log => +SentrySdk.Experimental.Logger.LogWarning(static log => { log.SetAttribute("my.attribute", "value"); -}); +}, "A log message with additional attributes."); ``` - -Please note that we will revise the API shape to set custom attributes during the experimental phase of the feature. - - Supported attribute types are: - Textual: `string` and `char` - Logical: `bool`