我将这些Nuget程序包添加到了WPF应用程序中:
记录器正在登录一个文件,该文件有效。但是没有数据传输到Azure。 我收到此错误:
我的问题:我应该在哪里(在代码中)初始化遥测通道?为什么我必须这样做?如果我仍然必须添加遥测客户端(使用配置),追加器是什么?
答案 0 :(得分:0)
更新:请按照下面的屏幕截图,并尝试查找您发送的信息。并且,如果仍然找不到该信息,请提供详细的代码(删除个人/重要数据(如工具密钥),并向我们提供您正在使用的nuget软件包和版本)。
1。单击概述页面中的搜索按钮:
2。在搜索屏幕中,正确设置本地时间和事件类型,然后尝试搜索消息:
您最好提供代码来设置log4net和应用洞察密钥。
我用wpf项目做了一个简单的测试,下面的代码可以正常工作:
public partial class MainWindow : Window
{
private static readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
public MainWindow()
{
TelemetryConfiguration.Active.InstrumentationKey = "the key";
log4net.Config.XmlConfigurator.Configure();
log.Info("wpf aaaa11111");
InitializeComponent();
}
}
您会收到错误消息“ AI:服务器遥测通道未初始化”,可能是由于某些不正确的配置所致,例如在上面的工作代码中使用以下代码:
//when add the code, it will cause the error you mentioned.
TelemetryConfiguration.Active.TelemetryChannel = new ServerTelemetryChannel();
如果必须添加遥测客户端(使用config)并且配置正确,则log4net和遥测客户端都可以将数据发送到应用程序见解。如下代码:
public partial class MainWindow : Window
{
private readonly TelemetryClient telemetryClient;
private static readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
public MainWindow()
{
//configure the key here for log4net
TelemetryConfiguration.Active.InstrumentationKey = "the key";
log4net.Config.XmlConfigurator.Configure();
var config = new TelemetryConfiguration();
//configure the key here for telemetry client
config.InstrumentationKey = "the key";
telemetryClient = new TelemetryClient(config);
log.Info("wpf aaaa333");
log.Info(TelemetryConfiguration.Active.TelemetryChannel.ToString());
telemetryClient.TrackTrace("it is going to start!");
InitializeComponent();
}
}
答案 1 :(得分:0)
因此,最终一切正常。我再次在此处提供所需步骤:
添加NugetPackages: log4net,Microsoft.ApplicationInsights,Microsoft.ApplicationInsights.Log4NetAppender和Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel到项目
在MainWindow.xaml.cs中:
private static readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
public MainWindow()
{
TelemetryConfiguration.Active.InstrumentationKey = "the key";
log4net.Config.XmlConfigurator.Configure();
log.Info("wpf aaaa11111");
InitializeComponent();
}
}
完成
非常感谢@Ivan Yang的解决方案以及他为我提供的帮助!