Fly*_*ynn 10 c# logging nlog azure-application-insights azure-devops
我正在使用Microsoft Application Insights我的Web应用程序.我使用Application Insights TraceListener NuGet包进行日志记录.这非常有效.
现在我想切换到NLog.我添加了Microsoft.ApplicationInsights.NLogTargetNuGet包并在我的NLog配置文件中添加了一个新的NLog目标:
<target name='ai' xsi:type='ApplicationInsights' />
Run Code Online (Sandbox Code Playgroud)
NLog引发异常:
Target cannot be found: 'ApplicationInsights'
Run Code Online (Sandbox Code Playgroud)
我也试过通过扩展添加程序集,如下所示:
<extensions>
<add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>
Run Code Online (Sandbox Code Playgroud)
但它也没有用.
有什么建议?
小智 7
如果其他人绊倒了这一点:正确的目标类型ApplicationInsightsTarget不是ApplicationInsights。
这工作正常:
<extensions>
<add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>
<targets>
<target name="ai" xsi:type="ApplicationInsightsTarget" />
</targets>
Run Code Online (Sandbox Code Playgroud)
无需通过代码添加目标。
另请参阅:https ://github.com/microsoft/ApplicationInsights-dotnet/tree/main/LOGGING#nlog
解决方案:(感谢@nemesv作为提示)
以编程方式添加目标
ConfigurationItemFactory.Default.Targets.RegisterDefinition(
"ApplicationInsightsTarget",
typeof(Microsoft.ApplicationInsights.NLogTarget.ApplicationInsightsTarget)
);
Run Code Online (Sandbox Code Playgroud)
并与
<target name='ai' xsi:type='ApplicationInsightsTarget' />
Run Code Online (Sandbox Code Playgroud)
或者您可以以编程方式指定目标:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8556 次 |
| 最近记录: |