问题
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?
回答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' />
回答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;
来源:https://stackoverflow.com/questions/23369313/how-do-i-use-microsoft-application-insights-with-nlog-target-cannot-be-found