我发布这个并回答它,因为这让我难以忍受了很长时间。我的web.config
中有以下行:
<aspNetCore processPath="dotnet" arguments=".\XXX.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
显然,这应该记录到logs\stdout
,但是当我看,那里什么也没有。我进行了一次疯狂的追逐,在整个磁盘上搜索任何名为'log'(返回太多)或'stdout'(没有返回任何内容)的内容,但仍然无法弄明白。
答案 0 :(得分:12)
您可以检查计算机上的事件查看器 - &gt;应用程序以查看是否记录了任何错误,这可以解释为什么不生成日志文件。
但是,最可能的原因是IIS没有写入该日志文件夹的权限。
答案 1 :(得分:8)
您必须确保日志文件夹存在! IIS不会为您提供。解决这个令人愤怒的问题的简单解决方案。
答案 2 :(得分:2)
我创建了logs文件夹,但是仍然没有任何记录。我发现您可以使用home / logfiles下的现有文件夹并使它工作而无需创建文件夹。 此解决方案对我来说一直有效:
1)打开在已发布应用程序的根文件夹中创建的web.config文件。
2)像这样将stdoutlogEnabled设置为true,将 stdoutLogFile设置为\?\%home%\ LogFiles \ stdout :
<aspNetCore processPath="dotnet" arguments=".\SellCarsHereV2.dll" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
然后,您可以转到该路径并下载文件,或使用Azure门户(如果它托管在Azure中)。如果您使用的是Azure门户:
1)转到应用服务。
2)转到高级工具,该工具会将您带到https:// {您的应用程序服务} .scm.azurewebsites.net /
3)单击调试控制台菜单-> CMD
4)单击LogFiles
5)您将看到一个名为stdout _ *。log的文件,并且可以单击铅笔进行查看。您也可以根据需要下载文件。
答案 3 :(得分:1)
根据 web.config 文件中提供的stdoutLogFile=".\logs\stdout"
,应在the publish directory内web.config旁边创建logs
目录。
要创建logs
子目录,可以使用ASP.NET Core directory structure中描述的方法。
只需将其粘贴到已发布项目的*.csproj
文件的末尾
<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>
目录
答案 4 :(得分:0)
为了获取日志,我执行了以下步骤:
IIS_IUSRS
的写访问权限web.config
中设置绝对路径:stdoutLogFile="C:\xxx\xxx\logs"
答案 5 :(得分:0)
检查事件查看器。如果您像我一样,您将在 Application\Event 日志中看到一个条目“无法创建 stdoutLogFile c:....logs\stdout_....”。您必须自己在那里创建日志文件夹。一旦我创建了“日志”文件夹 stdout_.... 文件开始转储到其中。当然也要确定stdoutLogEnabled="true"。预期文件夹位置的位置将显示在事件查看器日志中。这很重要,因为它可能不在您认为应该位于的位置。