Здравствуйте, r0nd, Вы писали:
R>Ну да:
R>
R>
R>- AddConsole добавляет полноценный ConsoleLoggerProvider, который поддерживает различные форматтеры (включая JSON).
R> - AddSimpleConsole добавляет упрощенный SimpleConsoleLoggerProvider, который не поддерживает такие форматтеры.
R>
Не, тут вообще какая-то мистика.
Пишу явно
loggingBuilder.ClearProviders();
ConsoleLoggerExtensions.AddConsole(loggingBuilder);
Ставлю дебаггер вот на этом коде фреймворка, вижу как добавляется
public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
builder.AddConfiguration();
builder.AddConsoleFormatter<JsonConsoleFormatter, JsonConsoleFormatterOptions, ConsoleFormatterConfigureOptions>(); /// <==
builder.AddConsoleFormatter<SystemdConsoleFormatter, ConsoleFormatterOptions, ConsoleFormatterConfigureOptions>();
builder.AddConsoleFormatter<SimpleConsoleFormatter, SimpleConsoleFormatterOptions, ConsoleFormatterConfigureOptions>();
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider, ConsoleLoggerProvider>());
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IConfigureOptions<ConsoleLoggerOptions>, ConsoleLoggerConfigureOptions>());
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IOptionsChangeTokenSource<ConsoleLoggerOptions>, LoggerProviderOptionsChangeTokenSource<ConsoleLoggerOptions, ConsoleLoggerProvider>>());
return builder;
}
Лезу в отладчик, вижу там зарегистрированный JsonFormatter в IServiceProvider
В конфиге стоит "FormatterName":"json"
В консоль все равно льется Simple
Я явно где-то упускаю какую-то очевидную фигню.
R>Попробуйте сделать разные профили для локального конфига (appsettings.Development.json) и нет(appsettings.json).
В смысле, разные профили? У меня так и есть — в development стоит simple, в app — json, но эта строчка просто игнорируется и подхватывается последний провайдер. При этом если сделать AddConsole, то это всегда Simple. Собственно, в этом и проблема.