Где идут журналы при запуске ASP.NET Core на IIS 7.5?
Я публикую это и отвечаю на него, потому что это очень сильно заглохло меня. У меня есть следующая строка в web.config
:
<aspNetCore processPath="dotnet" arguments=".\XXX.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
По-видимому, это должно быть logging to logs\stdout
, но когда я смотрю, там ничего нет. Я отправился на дикую охоту за гусями, обыскивая весь диск для чего-либо с именем "log" (который слишком много возвращался) или "stdout" (который ничего не возвращал) и все еще не мог понять.
Ответы
Ответ 1
Вероятно, вы можете проверить средство просмотра событий на своем аппарате → Приложение, чтобы узнать, не зарегистрированы ли какие-либо ошибки, что может объяснить, почему ваши файлы журналов не создаются.
Однако наиболее вероятная причина заключается в том, что IIS не имеет права на запись в эту папку журнала.
- Щелкните правой кнопкой мыши по папке → Безопасность
- Убедитесь, что пользователь IIS_IUSRS имеет следующие разрешения: чтение и выполнение, список, запись (потенциально запись отсутствует по умолчанию)
Ответ 2
Вы должны убедиться, что папка журнала существует! IIS не сделает это за вас. Такое простое решение этой проблемы беспризорности.
Ответ 3
Я создал папку журналов, но все равно ничего не регистрировалось. Я узнал, что вы можете использовать существующую папку под домашними/лог файлами и заставить ее работать без создания папки. Это решение работало для меня, как есть:
1) Откройте файл web.config, созданный в корневой папке опубликованного приложения.
2) Установите stdoutlogEnabled в true и stdoutLogFile в \?\%Home%\LogFiles\stdout следующим образом:
<aspNetCore processPath="dotnet" arguments=".\SellCarsHereV2.dll" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
Затем вы можете перейти на этот путь и загрузить файлы или использовать Azure Portal (если он размещен в Azure). Если вы используете Azure Portal:
1) Откройте службу приложений.
2) Перейдите в раздел "Дополнительные инструменты", который приведет вас к https://{службе вашего приложения}.scm.azurewebsites.net/
3) Нажмите "Меню консоли отладки" → CMD
4) Нажмите LogFiles
5) Вы увидите файл с именем stdout _ *. Log, и вы можете нажать на карандаш, чтобы просмотреть его. Вы также можете скачать файл, если хотите.
Ответ 4
Согласно предоставленному stdoutLogFile=".\logs\stdout"
в файле web.config, каталог logs
должен быть создан рядом с web.config внутри каталога публикации.
Чтобы создать подкаталог logs
вы можете использовать подход, описанный в структуре каталога ASP.NET Core.
Просто вставьте это в конец опубликованного проекта *.csproj
file
<Project>
...
<Target Name="CreateLogsFolder" AfterTargets="Publish">
<MakeDir Directories="$(PublishDir)logs"
Condition="!Exists('$(PublishDir)logs')" />
</Target>
</Project>
Во время процесса публикации после этого изменения каталог logs
должен быть создан, если он не существует в выходном каталоге.
Если вы запустите, например: dotnet publish --output <path_to_your_publish_folder>
вы должны найти каталог logs
внутри <path_to_your_publish_folder>
Ответ 5
Я сделал следующие шаги, чтобы получить журналы:
- Создайте папку logs и предоставьте доступ на
IIS_IUSRS
к IIS_IUSRS
как описано выше - Установите абсолютный путь в
web.config
: stdoutLogFile="C:\xxx\xxx\logs"
- Перезапустите пул приложений
- Стоп, запусти сайт
редактировать
Шаг 2 работает с относительным путем тоже stdoutLogFile=".\logs\stdout"