Advanced Configuration Example

Review an advanced example of configuration for NLog.

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
example-org / example-project
"
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
});
Was this helpful?
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").