LoggerFactory.AddApplicationInsights устарело. Добавьте ссылку на Microsoft.Extensions.Logging.ApplicationInsights и используйте следующий код. Вы можете найти полный пример от Microsoft здесь .
static void Main(string[] args)
{
IServiceCollection services = new ServiceCollection();
// Channel is explicitly configured to do flush on it later.
var channel = new InMemoryChannel();
services.Configure<TelemetryConfiguration>(
(config) =>
{
config.TelemetryChannel = channel;
}
);
services.AddLogging(builder =>
{
builder.AddConsole();
builder.AddApplicationInsights("[AI Instrumentation Key here]");
});
var provider = services.BuildServiceProvider();
var logger = provider.GetService<ILogger<Program>>();
logger.LogInformation("This will show up in Application Insights");
// Explicitly call Flush() followed by sleep is required in Console Apps.
// This is to ensure that even if application terminates, telemetry is sent to the back-end.
channel.Flush();
Thread.Sleep(1000);
}
Вы можете добавить пользовательские измерения для реализации структурированного ведения журнала, используя шаблоны сообщений журнала .
public void DoTheThings()
{
var id = 12345;
var duration = 300;
logger.LogInformation(
"Did the things for Id: {actionId} in {durationMs}ms. Params: {p2}, {p1}",
id, duration, "param1", "param2");
}
Это приведет к трассировке в Application Insights с сообщением:
"Did the things for Id: 12345 in 300ms. Params: param1, param2"
и нестандартные размеры, в том числе:
{
"actionId": "12345",
"durationMS": "300",
"p2" : "param1",
"p1" : "param2"
}
Обратите внимание, что:
- Шаблон сообщения не интерполированная строка.
- Имя свойства в customDimensions основывается на шаблоне сообщения
не аргумент.
- Свойства шаблона связаны с аргументами в последовательности, а не по имени.