How do I use Microsoft Application Insights with NLog (Target cannot be found: 'ApplicationInsights')

13,963

Solution 1

Solution: (thanks to @nemesv for the tip)

Programmatically add the target with

ConfigurationItemFactory.Default.Targets.RegisterDefinition(
    "ApplicationInsightsTarget", 
    typeof(Microsoft.ApplicationInsights.NLogTarget.ApplicationInsightsTarget)
);

and use it with

<target name='ai' xsi:type='ApplicationInsightsTarget' />

Solution 2

Or you can programmatically specify the target:

var config = new LoggingConfiguration();
ConfigurationItemFactory.Default.Targets.RegisterDefinition(
            "ai", 
            typeof(ApplicationInsightsTarget)
        );
ApplicationInsightsTarget aiTarget = new ApplicationInsightsTarget();
aiTarget.InstrumentationKey = "your_key";
aiTarget.Name = "ai";
config.AddTarget("ai", aiTarget);
LogManager.Configuration = config;
Share:
13,963
Michael A. Volz aka Flynn
Author by

Michael A. Volz aka Flynn

C# developer, Elon Musk fan, computer geek, realist, big guy, Azure Solutions Architect Expert. I am constantly going beyond the truths that I already hold.

Updated on June 26, 2022

Comments

  • Michael A. Volz aka Flynn
    Michael A. Volz aka Flynn almost 2 years

    I am using Microsoft Application Insights for my Web Application. I used the Application Insights TraceListener NuGet package for logging. That worked perfectly.

    Now I would like to switch to NLog. I added the Microsoft.ApplicationInsights.NLogTarget NuGet package and added a new NLog target in my NLog configuration file:

    <target name='ai' xsi:type='ApplicationInsights' />
    

    NLog throws an exception:

    Target cannot be found: 'ApplicationInsights'
    

    I also tried adding the assembly via extensions like so:

    <extensions>
        <add assembly="Microsoft.ApplicationInsights.NLogTarget" />
    </extensions>    
    

    But it did not work either.

    Any suggestions?

  • Bargitta
    Bargitta over 6 years
    seems they all map to trace in application insight, any idea how to map it to exception?
  • mdzieg
    mdzieg over 5 years
    What a nonsense! Documentation says nothing about that extra RegisterDefinition call. I was struggling with this as well. Thank you very much for this solution!
  • Arjun Menon
    Arjun Menon about 4 years
    I am trying to register and log programmatically. But the logs are not getting logged. I have raised a question in stackoverflow and its up for a toss. I tried with internal log and it is showing no error what so error. Here's the link to my question stackoverflow.com/questions/60401441/…