在IIS 7.5上运行ASP.NET Core时,日志会去哪里?
我把这个贴出来并回复,因为这让我很长时间都感到困惑。我的在IIS 7.5上运行ASP.NET Core时,日志会去哪里?,iis,asp.net-core,Iis,Asp.net Core,我把这个贴出来并回复,因为这让我很长时间都感到困惑。我的web.config中有以下行: <aspNetCore processPath="dotnet" arguments=".\XXX.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" /> 显然,这应该记录到logs\stdout,但是当我看的时候,那里什么都没有。我进行了一次白
web.config
中有以下行:
<aspNetCore processPath="dotnet" arguments=".\XXX.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
显然,这应该记录到
logs\stdout
,但是当我看的时候,那里什么都没有。我进行了一次白费力气的搜索,在整个磁盘上搜索任何名为“log”(返回太多)或“stdout”(未返回任何内容)的内容,但仍然无法找到它。您必须确保日志文件夹存在!IIS不会帮你的。这是一个解决这一恼人问题的简单方法。您可能可以检查计算机->应用程序上的事件查看器,查看是否记录了任何错误,这可以解释为什么没有生成日志文件
但是,最可能的原因是IIS没有写入该日志文件夹的权限
**将日志/标准输出文件夹复制到网站根文件夹,由于某些原因,此处会显示日志。(建议)根据提供的
stdoutLogFile=“.\logs\stdout”
在您的web.config文件中,应在web.config旁边的内部创建logs
目录
要创建logs
子目录,可以使用中描述的方法
只需将其粘贴到已发布项目的*.csproj
文件的末尾
<Project>
...
<Target Name="CreateLogsFolder" AfterTargets="Publish">
<MakeDir Directories="$(PublishDir)logs"
Condition="!Exists('$(PublishDir)logs')" />
</Target>
</Project>
...
在此更改后的发布过程中,如果输出目录中不存在日志
目录,则应创建该目录
例如,如果您运行:
dotnet publish--output
您应该可以在
中找到logs
目录。我创建了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://{your app service}.scm.azurewebsites.net/
3) 单击调试控制台菜单-->CMD
4) 点击日志文件
5) 您将看到一个名为stdout.*.log的文件,您可以单击铅笔查看它。如果需要,您也可以下载该文件。为了获取日志,我执行了以下步骤:
web.config
中设置绝对路径:stdoutLogFile=“C:\xxx\xxx\logs”
步骤2也适用于相对路径
stdoutLogFile=“.\logs\stdout”
检查事件查看器。如果您像我一样,您将在Application\Event log中看到一个条目“无法创建stdoutLogFile c:..logs\stdout\…”。您必须自己在那里创建日志文件夹。一旦我创建了“logs”文件夹stdout\ux。。。。文件开始转储到其中。当然,还要确保stdoutLogEnabled=“true”。预期文件夹位置的位置将显示在事件查看器日志中。这一点很重要,因为它可能不是您认为它应该位于的位置。为什么IIS有权创建单独的日志文件,而不是日志文件夹?@Andrewilliamson我不确定不幸的是:(@VlatkoVlahek My IIS_IUSRS拥有日志文件夹的完全权限,但没有创建日志文件!@HamidEbr你能检查一下在web.config中你的stdoutLogEnabled是否设置为true吗?另外,在应用程序启动时,事件查看器中是否有任何错误?@vlatkovlahk stdoutLogEnabled为true,事件查看器中也有一些错误。对我来说,这是添加的使用stdoutLogFile=“..\logs\stdout.log”在根目录下的approt和wwwroot旁边设置logg文件夹,文件夹应该具有什么类型的权限?读取和执行、列出、写入(默认情况下可能缺少写入)-看,我喜欢这个,因为它使用了一个现有的日志文件夹。就我的一生而言,我无法让任何KuDu写入操作在Azure上工作(创建新文件夹和编辑web.config都给了我权限错误,即使文件没有标为readonly)。我浪费了很多时间没有注意到我有stdoutLogEnabled=“false”
,我自己没有修改过,所以请考虑一下。。。