Да, это возможно, но это зависит от ситуации.
Сценарий 1
Если вы имеете дело с приложением, которое может иногда потерять подключение к сети.тогда вы можете использовать ServerTelemetryChannel
.
Сценарий 2
Если вы хотите хранить телеметрию в автономном режиме в центральном месте и иметь отдельный процесс, отправьте телеметрию в Application Insigths, тогда нет, нет готовых настроекРешение для этого.См. Также этот вопрос .
Теперь для первого сценария это сработает:
using System;
using System.Threading;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
namespace OfflineApplicationInsights
{
class Program
{
static void Main(string[] args)
{
var upc = new UsingPersistenceChannel();
upc.Log("Test1");
upc.Log("Test2");
upc.Log("Test3");
upc.Log("Test4");
Console.ReadLine();
upc.Flush();
Thread.Sleep(2000);
}
}
public class UsingPersistenceChannel
{
private readonly TelemetryClient _client;
public UsingPersistenceChannel()
{
var config = new TelemetryConfiguration("[your key here]");
var telemetryChannel = new ServerTelemetryChannel
{
StorageFolder = @"C:\Temp\ai-offline",
DeveloperMode = false,
MaxTelemetryBufferCapacity = 1
};
config.TelemetryChannel = telemetryChannel;
telemetryChannel.Initialize(config);
_client = new TelemetryClient(config)
{
InstrumentationKey = "[your key here]"
};
}
public void Log(string msg)
{
_client.TrackTrace(msg);
}
public void Flush()
{
_client.Flush();
}
}
}
Но есть ошибка , котораямешает этому иногда работать.Для меня это работает, только если я отключаю (!) Все сетевые адаптеры с помощью панели конфигурации Windows через Панель управления \ Сеть и Интернет \ Сетевые подключения
Если вы отключите сеть и запустите эту программу, вы увидитенекоторые файлы появляются в указанной папке.Восстановите сеть и снова запустите приложение, и вы заметите, что файлы исчезнут, потому что они подобраны программой и отправлены после обнаружения активности netwerk.По крайней мере, так я это проверил.