Изменение лог-уровня в appsettings.json не будет применено к NLog - PullRequest
1 голос
/ 28 мая 2019

Я использую NLog с основным приложением dotnet, настроенным так, как описано здесь. https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-2

В nlog.config, если я установил minLevel на Error и запустил свое приложение, в журнале я вижу, что logDebug отключен.

Если я вернусь к трассировке, все уровни будут установлены в true (error, trace, debug, info, warning)

и если я положу это в файл конфигурации (appsettings.json)

"Logging": {
        "LogLevel": {
            "Default": "Error",
            "Microsoft": "Information"
        }
    }

тогда ничего не происходит, все уровни логгера по-прежнему установлены в true, что может быть не так? enter image description here

1 Ответ

1 голос
/ 29 мая 2019

Как уже упоминал Снейфут,

это конфигурация регистрации расширений Microsoft.

При использовании логгеров NLog + Injected .NET Core (с использованием Microsoft Extension Logging) процесс выглядит следующим образом:

ILogger<MyClass> -> LoggerFactory in Microsoft Extension Logging -> LogFactory in NLog.

Чтобы настроить NLog, вы должны обновить NLog <rules> в вашем nlog.config, например,

(также возможно из кода, см. документы )

<rules>
   <logger name="*" minlevel="debug" />
</rules>

Обратите внимание, что вы не увидите журналы отладки, если minlevel - "debug" в NLog и "error" appsettings.json

примечание 2: При использовании NLog direct, например, NLog.LogManager.GetCurrentClassLogger(), вам нужно только настроить NLog, и конфиг appsettings.json для этих журналов не используется.

...