Reputation: 1775
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?
Upvotes: 17
Views: 20720
Reputation: 141
If anyone else stumbles over this:
The correct target type is ApplicationInsightsTarget
not ApplicationInsights
.
This works fine:
<extensions>
<add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>
<targets>
<target name="ai" xsi:type="ApplicationInsightsTarget" />
</targets>
No need to add the target by code.
See also: https://github.com/microsoft/ApplicationInsights-dotnet/tree/main/LOGGING#nlog
Upvotes: 7
Reputation: 977
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;
Upvotes: 8
Reputation: 1775
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' />
Upvotes: 10