Создание и перенаправление журналов IIS
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 9 этой статьи.
Модуль ASP.NET Core перенаправляет выходные потоки консоли stdout и stderr на диск, если заданы атрибуты stdoutLogEnabled
и stdoutLogFile
элемента aspNetCore
. Все папки, указанные в пути stdoutLogFile
, создаются модулем при создании файла журнала. Пул приложений должен иметь доступ на запись в папку, где записываются журналы (используйте атрибут IIS AppPool\{APP POOL NAME}
для предоставления разрешения на запись, где заполнитель {APP POOL NAME}
— это имя пула приложений).
Журналы не выполняют циклический сдвиг, пока не произойдет процесс перезапуска или перезагрузки. Администратор несет ответственность за ограничение дискового пространства, которое потребляют журналы.
Журнал stdout рекомендуется использовать только для устранения проблем с запуском приложений при размещении в IIS или при использовании поддержки во время разработки для служб IIS в Visual Studio, а не при локальной отладке и выполнении приложения с использованием IIS Express.
Не используйте журнал stdout для ведения общего журнала приложений. Для обычного входа в приложение ASP.NET Core используйте библиотеку ведения журналов, которая ограничивает размер файла журнала и выполняет циклический сдвиг журналов. Дополнительные сведения см. в разделе Сторонние поставщики ведения журналов.
При создании файла журнала автоматически добавляются отметка времени и расширение файла. Имя файла журнала состоит из добавления метки времени, идентификатора процесса и расширения файла (.log
) к последнему сегменту stdoutLogFile
пути (обычно stdout
) с разделителями подчеркивания. stdoutLogFile
Если путь заканчиваетсяstdout
, в журнале для приложения с piD 1934, созданном 2/5.2018 в 19:42:32, имеется имя stdout_20180205194132_1934.log
файла.
Если stdoutLogEnabled
имеет значение false, возникающие при запуске приложения ошибки записываются и передаются в журнал событий (макс. 30 КБ). После запуска все дополнительные журналы удаляются.
В следующем примере элемент aspNetCore
настраивает ведение журнала stdout по относительному пути .\log\
. Убедитесь, что пользователь identity AppPool имеет разрешение на запись в указанный путь.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
</aspNetCore>
При публикации приложения для развертывания Службы приложений Azure веб-пакет SDK задает для stdoutLogFile
значение \\?\%home%\LogFiles\stdout
. Переменная среды %home
предопределена для приложений, размещенных в Службе приложений Azure.
Сведения о создании правил фильтрации журналов см. в разделе Применение правил фильтрации журналов в коде в документации по ведению журналов ASP.NET Core.
Дополнительные сведения о форматах путей см. в разделе Форматы путей к файлам в системах Windows.
Расширенные журналы диагностики
Модуль ASP.NET Core можно настроить. Он позволяет работать с расширенными журналами диагностики. Добавьте элемент <handlerSettings>
в элемент <aspNetCore>
в web.config
. Задайте параметру debugLevel
значение TRACE
, чтобы обеспечить высокую точность диагностических сведений:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
<handlerSetting name="debugLevel" value="FILE,TRACE" />
</handlerSettings>
</aspNetCore>
Все папки в пути (logs
в предыдущем примере) создаются модулем при создании файла журнала. Пул приложений должен иметь доступ на запись в папку, где записываются журналы (используйте атрибут IIS AppPool\{APP POOL NAME}
для предоставления разрешения на запись, где заполнитель {APP POOL NAME}
— это имя пула приложений).
Значения уровня отладки (debugLevel
) могут включать уровень и расположение.
Уровни (в порядке возрастания степени детализации):
- ОШИБКА
- ПРЕДУПРЕЖДЕНИЕ
- INFO
- ТРАССИРОВКА
Расположения (допускаются несколько расположений):
- CONSOLE
- EVENTLOG
- ФАЙЛ
Параметры обработчика могут быть указаны с помощью переменных среды:
ASPNETCORE_MODULE_DEBUG_FILE
: Путь к файлу журнала отладки. (Значение по умолчанию:aspnetcore-debug.log
.)ASPNETCORE_MODULE_DEBUG
: параметр уровня отладки.
Предупреждение
Не оставляйте ведение журнала отладки включенным в развертывании дольше того времени, которое требуется для устранения проблемы. Размер журнала не ограничен. Если оставить журнал отладки включенным, он может исчерпать все доступное место на диске и привести к сбою сервера или службы приложений.
Пример использования элемента aspNetCore
в файле web.config
см. в статье Настройка модуля ASP.NET Core с помощью web.config
.
ASP.NET Core