MENU
    How to Configure NLog
    • 2 Minutes to read
    • Dark
    • PDF

    How to Configure NLog

    • Dark
    • PDF

    Article summary

    Use NLog to send your application logs to Retrace. Follow these steps:

    1. Add our NuGet package
    2. Add our logging target to your NLog configuration
    3. Enter your Stackify license key

    The code for Stackify's .NET library and logging appenders are all available on Github.

    Getting Started Using NuGet

    To add our NLog to your project, install our NuGet package.

    PM> Install-Package NLog.Targets.Stackify
    Plain text

    Add the Stackify ApiKey to your configuration

    To complete the NuGet installation, copy your Stackify Activation Key (license key) from your Stackify account page and paste it here.

    Please note that this example is for a .NET Framework config file. If you are using .NET Core, the configuration is the same but in JSON.

    <appSettings>
        <add key="Stackify.ApiKey" value="Your Activation Key" />
        <add key="Stackify.AppName" value="Your App Name"/> <!-- optional - will be inferred by Stackify if this is running on a monitored server -->
        <add key="Stackify.Environment" value="Your Environment"/> <!-- optional - will be inferred by Stackify if this is running on a monitored server -->
    </appSettings>
    XML

    This installation does not require the AppName and Environment name. However, we recommend it if you are logging from a server without a Retrace agent.

    Finish the process to complete the installation and configuration of the Stackify NLog appender.

    Basic Appender Configuration

    Here is the basic NLog configuration:

    <nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <targets>
        <target xsi:type="StackifyTarget" name="stackify"/>
      </targets>
      <rules>
          <logger name="*" minlevel="Debug" writeTo="stackify"/>
      </rules>
    </nlog>
    XML

    Logging Custom Properties

    To add custom properties to your logs, use one of the overloaded logger methods. Choose the level of log, the message, and add the needed properties.

    Execute the following code:

    var logger = NLog.LogManager.GetCurrentClassLogger();
    logger.Debug("User Login", new { ID = 65465849, User = "Stackify" });
    C#

    The output is as follows:

    image.png

    Recording Context Values

    Using logical or thread context keys within NLog is possible. You can also collect and send it to Retrace.

    Review the NLog documentation to learn more about using contexts.

    GlobalDiagnosticContext.Set(“UserID”, 659849);
    MappedDiagnosticsLogicalContext.Set(“Contect”, context.ToString());
    NestedDiagnosticsLogicalContext.Push(“clientid”);
    NLog.LogManager.Shutdown();  //must be called before you exit your app to ensure that messages are flushed to Stackify
    C#

    In your configuration:

    <target name="stackify" type="StackifyTarget" includeMdlc="true" includeEventProperties="true" layout="${message}">
      <contextproperty name="AppId" layout="${gdc:item=AppId}" />
      <contextproperty name="NestedDiagnosticsLogicalContext" layout="${ndlc}" />
      <contextproperty name="ThreadId" layout="${threadid}" />
      <contextproperty name="TraceActivityId" layout="${activityid}" />
      <contextproperty name="MessageTemplate" layout="${message:raw=true}" />
    </target>
    XML

    Use NestedDiagnosticLogicalContext (NDLC) if you will not use a custom layout. This will be automatically added to Stackify once it is targeted. It will not require any layout or editing in your config file.

    Control which Logs are being sent to Stackify

    You can alter the logging level for Stackify. This can be done if you want to continue logging to other targets aside from Stackify.

    Inside the NLog file, add a new rule by replacing ‘Info’ with your preference and ‘stackify’ with the target name.

    <targets>
        <target name="textfile" xsi:type="File" fileName="logfile.txt"	/>
        <target xsi:type="StackifyTarget" name="stackify"  />
    </targets>
    <rules>
        <logger name="*" minlevel="Debug" writeTo="textfile"/>
        <logger name="*" minlevel="Info" writeTo="stackify" />
    </rules>
    XML

    View your Logs with Prefix

    You can use Prefix to view your logs. It requires adding the NLog appender to pick up and show your logs within Prefix. Stackify ApiKey configuration is not needed for Prefix to work properly.

    Troubleshooting

    Check with Troubleshoot: Errors and Logs .NET Configurations, if you have issues getting Errors and Logs.


    Was this article helpful?