#asp.net-core #azure-application-insights #nlog
#asp.net-ядро #azure-application-insights #nlog
Вопрос:
Рассмотрим следующий код в методе, в который ILogger<>
вводится в конструктор:
using (_logger.BeginScope("Requesting {page} for {identification}", page, identification))
{
if (identification == null)
{
var test = "Test String";
_logger.LogTrace("No identification present {test}. Presenting Index page", test);
return Page();
}
_logger.LogDebug("Identification present: {identification}", identification);
}
где я ожидал бы получить некоторую информацию о области видимости; хотя я не знаю, как это выглядит, но я предполагаю, что она добавлена к пользовательским размерам вдоль свойств LoggerName
and test
.
В моем классе запуска у меня есть это:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<ApplicationInsightsServiceOptions>(Configuration.GetSection("ApplicationInsights"));
services.AddApplicationInsightsTelemetry();
LogManager.Configuration = new NLogLoggingConfiguration(Configuration.GetSection("NLog"));
/// ... the reset
}
Мой appsettings.json выглядит так:
{
"Logging": {
"IncludeScopes": true,
"NLog": {
"IncludeScopes": true
},
"LogLevel": {
"Default": "Trace",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
},
"ApplicationInsights": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Trace"
}
}
},
"NLog": {
"autoReload": true,
"throwConfigExceptions": true,
"internalLogLevel": "trace",
"internalLogFile": "${basedir}/internal-nlog.txt",
"extensions": [
{
"assembly": "Microsoft.ApplicationInsights.NLogTarget"
}
],
"targets": {
"aiTarget": {
"type": "ApplicationInsightsTarget"
},
"logconsole": {
"type": "ColoredConsole"
}
},
"rules": [
{
"logger": "*",
"minLevel": "Trace",
"writeTo": "aiTarget, logconsole"
}
]
}
Есть ли что-то, чего мне не хватает …?
Ответ №1:
Я думаю, вы можете попробовать это:
"targets": {
"aiTarget": {
"type": "ApplicationInsightsTarget",
"contextproperties": [
{
"name": "scopecontext",
"layout": {
"type": "JsonLayout",
"includemdlc": "true"
}
}]
},
"logconsole": {
"type": "ColoredConsole"
}
},
Также создали это: https://github.com/microsoft/ApplicationInsights-dotnet/pull/2103
Комментарии:
1. Вау, это работает! Я очень благодарен за ваш ответ 🙂 но я не понимаю, как я мог бы решить эту проблему без вашего ведома, возможно, это просто опыт. Является ли ваш PR, чтобы сделать его готовым к использованию, как указано в документах? Итак, если PR одобрен, изменения конфигурации могут быть отменены, чтобы иметь ту же функциональность?
2. @321X Да, PR позволит захватывать контекст области видимости без помощи JsonLayout