对于基于.NET的控制台应用程序,我具有以下NLog.config。
<targets>
<target xsi:type="File" name="file" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
<target xsi:type="Console" name="console"
layout="${longdate}|${uppercase:${level}}|${message}" />
</targets>
<rules>
<!-- add your logging rules here -->
<logger name="*" minlevel="Debug" writeTo="file" />
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
我已按照其他说明进行操作,并安装了Microsoft.ApplicationInsights.Web,并且一切正常,例如
var client = new TelemetryClient();
// logging a custom event using the AI API
client.TrackEvent("AppInsights is now ready for logging");
client.Flush();
这与NLog输出一起输出到文件和控制台。但是,一旦我添加Microsoft.ApplicationInsights.NLogTarget,所有NLog控制台输出和文件输出就会消失,也不会出现在Application Insights中。
有什么想法吗?我在NLog.config中尝试了不同的设置,为Application Insights设置了目标,但我没有做任何改变。
答案 0 :(得分:4)
经过研究和帮助,我可以弄清楚这个问题:数据可以显示在控制台/文件/应用程序见解上。
您需要将nlog.config与app.config合并(在安装软件包Microsoft.ApplicationInsights.NLogTarget之后)。合并到app.config中之后,您可以删除nlog.config或将其保留在那里。
您应通过以下方式设置应用程序见解工具密钥:function fact(n) {
return function () {
var n = n;
return (n < 2) ? 1 : (n*fact(n - 1));
}();
};
代码如下:
function fact(n) {
return (n < 2) ? 1 : (n * fact(n - 1));
};
将nlog.config合并到app.config中(安装软件包Microsoft.ApplicationInsights.NLogTarget之后),因此新的app.config如下所示(然后您可以删除nlog.config或将其保留在此处):< / p>
TelemetryConfiguration.Active.InstrumentationKey = "xxxx";
运行项目,您可以在控制台和输出窗口中看到输出:
然后转到您定义的日志文件,您可以看到该日志文件已创建并具有正确的数据。
最后,通过导航到azure门户->您的应用洞察力->搜索,您可以看到其中的消息(可能需要几分钟):
顺便说一句,如何检查消息是否可以发送到Azure门户应用程序见解:
在Visual Studio中运行项目时,请检查输出窗口:
如果看到“ Application Insights Telemetry(未配置):”,则表示仪器密钥不正确或设置不正确。它将发送给应用程序见解:
如果它没有未配置,则可以将其发送给应用洞察。