Advanced Configuration Example
Review an advanced example of configuration for NLog.
NLog Layouts
For more information on how to dynamically set event data via NLog.config
, see NLog's layout renderer documentation.
The SDK can be configured via NLog.config
XML file:
Copied
<?xml version="1.0" encoding="utf-8" ?>
<nlog
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<extensions>
<add assembly="Sentry.NLog" />
</extensions>
<targets>
<target
xsi:type="Sentry"
name="sentry"
dsn="https://examplePublicKey@o0.ingest.sentry.io/0"
environment="Development"
release="my-project-name@2.3.12"
includeEventProperties="True"
layout="${message}"
breadcrumbLayout="${message}"
minimumBreadcrumbLevel="Debug"
ignoreEventsWithNoException="False"
includeEventDataOnBreadcrumbs="False"
includeEventPropertiesAsTags="True"
minimumEventLevel="Error"
>
<!-- Advanced options can be configured here-->
<options
sendDefaultPii="true"
attachStacktrace="false"
shutdownTimeoutSeconds="5"
debug="false"
>
<!--Advanced options can be specified as attributes or elements-->
<includeEventDataOnBreadcrumbs>true</includeEventDataOnBreadcrumbs>
</options>
<!-- Optionally specify user properties via NLog
(here using MappedDiagnosticsLogicalContext as an example) -->
<user
id="${mdlc:item=id}"
username="${mdlc:item=username}"
email="${mdlc:item=email}"
ipAddress="${mdlc:item=ipAddress}"
/>
<!--Optionally add any desired additional Tags that will be sent with every message -->
<tag
name="exception"
layout="${exception:format=shorttype}"
includeEmptyValue="false"
/>
<!--Optionally add any desired additional Data that will be sent with every message -->
<contextproperty name="threadid" layout="${threadid}" includeEmptyValue="true" />
</target>
</targets>
<rules>
<logger name="*" writeTo="sentry" />
</rules>
</nlog>
Or the SDK can be configured via code:
Copied
// Other overloads exist, for example, configure the SDK with only the DSN or no parameters at all.
LogManager.Configuration.AddSentry(o =>
{
o.Layout = "${message}";
o.BreadcrumbLayout = "${logger}: ${message}"; // Optionally specify a separate format for breadcrumbs
o.MinimumBreadcrumbLevel = LogLevel.Debug; // Debug and higher are stored as breadcrumbs (default is Info)
o.MinimumEventLevel = LogLevel.Error; // Error and higher is sent as event (default is Error)
// If DSN is not set, the SDK will look for an environment variable called SENTRY_DSN. If
// nothing is found, SDK is disabled.
o.Dsn = DsnSample;
o.AttachStacktrace = true;
o.SendDefaultPii = true; // Send Personal Identifiable information like the username of the user logged in to the device
o.IncludeEventDataOnBreadcrumbs = true; // Optionally include event properties with breadcrumbs
o.ShutdownTimeoutSeconds = 5;
//Optionally specify user properties via NLog (here using MappedDiagnosticsLogicalContext as an example)
o.User = new SentryNLogUser
{
Id = "${mdlc:item=id}",
Username = "${mdlc:item=username}",
Email = "${mdlc:item=email}",
IpAddress = "${mdlc:item=ipAddress}",
Other =
{
new TargetPropertyWithContext("mood", "joyous")
},
};
o.AddTag("logger", "${logger}"); // Send the logger name as a tag
// Other configuration
});
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").