Я использую NLog с основным приложением dotnet, настроенным, как описано здесь. https://github.com/NLog/NLog.Web/wiki/Начало работы с ASP.NET-Core-2
В nlog.config, если я установлю для minLevel значение Error и запущу свое приложение, я увижу в регистраторе, что logDebug отключен.
Если я вернусь к трассировке, все уровни будут установлены на true (error, trace, debug, info, warning)
и если я помещу это в файл конфигурации (appsettings.json)
"Logging": {
"LogLevel": {
"Default": "Error",
"Microsoft": "Information"
}
}
тогда ничего не происходит, все уровни регистратора по-прежнему установлены на true, что может быть не так?
Как упомянул Снейкфут,
это конфигурация ведения журнала расширений Microsoft.
При использовании регистраторов NLog + Injected .NET Core (с использованием Microsoft Extension Logging) процесс выглядит следующим образом:
ILogger<MyClass>
→ LoggerFactory
в журнале расширений Microsoft → LogFactory
в NLog.
Чтобы настроить NLog, вы должны обновить NLog <rules>
в вашем nlog.config, например.
(также возможно из кода, см. документы)
<rules>
<logger name = "*" minlevel = "debug" />
</rules>
Обратите внимание, что вы не увидите журналы отладки, если минимальный уровень «отладка» в NLog и «ошибка» appsettings.json
заметка 2:
При использовании NLog direct, например. NLog.LogManager.GetCurrentClassLogger()
вам нужно только настроить NLog, и конфигурация appsettings.json не используется для этих журналов.
Извините, мне непонятно: NLog использует Microsoft.Extension.Logging, а Microsoft.Extension.Logging считывает уровни журнала из appsettings.json, верно? поэтому разве appsettings.json не должен быть местом, где вы настраиваете уровень журнала? Это явно не работает, но я не понимаю, почему.
@gyozokudor Может быть, проверить этот пример? github.com/NLog/NLog.Web/tree/dev/examples/ASP.NET%20Core%203/…
Ссылка на гитхабе уже не работает. Используйте этот — github.com/NLog/NLog.Web/tree/master/examples/…
Вы показываете сведения об отладке для чистого объекта NLog Logger, но вы настроили LoggerFactory Microsoft Extension Logging (MEL). NLog не знает о настройке MEL-фильтров. MEL-ILogger выполнит фильтрацию в соответствии с MEL-конфигурацией (и перенаправит NLog-провайдеру, если он добавлен). NLog-Logger выполнит фильтрацию в соответствии с NLog-config.