在IIS 7.5上运行ASP.NET Core时,日志在哪里?

时间:2016-11-10 20:02:32

标签: iis asp.net-core

我发布这个并回答它,因为这让我难以忍受了很长时间。我的web.config中有以下行:

<aspNetCore processPath="dotnet" arguments=".\XXX.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />

显然,这应该记录到logs\stdout,但是当我看,那里什么也没有。我进行了一次疯狂的追逐,在整个磁盘上搜索任何名为'log'(返回太多)或'stdout'(没有返回任何内容)的内容,但仍然无法弄明白。

6 个答案:

答案 0 :(得分:12)

您可以检查计算机上的事件查看器 - &gt;应用程序以查看是否记录了任何错误,这可以解释为什么不生成日志文件。

但是,最可能的原因是IIS没有写入该日志文件夹的权限。

  1. 右键单击文件夹 - &gt;安全
  2. 确保IIS_IUSRS用户具有以下权限:读取和执行,列表,写入(默认情况下可能缺少写入)

答案 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)

为了获取日志,我执行了以下步骤:

  1. 如上所述创建文件夹日志并授予对IIS_IUSRS的写访问权限
  2. web.config中设置绝对路径:stdoutLogFile="C:\xxx\xxx\logs"
  3. 回收应用程序池
  4. 停止,启动网站

答案 5 :(得分:0)

检查事件查看器。如果您像我一样,您将在 Application\Event 日志中看到一个条目“无法创建 stdoutLogFile c:....logs\stdout_....”。您必须自己在那里创建日志文件夹。一旦我创建了“日志”文件夹 stdout_.... 文件开始转储到其中。当然也要确定stdoutLogEnabled="true"。预期文件夹位置的位置将显示在事件查看器日志中。这很重要,因为它可能不在您认为应该位于的位置。