Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IIS 7.5上运行ASP.NET Core时,日志会去哪里?_Iis_Asp.net Core - Fatal编程技术网

在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没有写入该日志文件夹的权限

  • 右键单击文件夹->安全性
  • 确保IIS_IUSRS用户具有以下权限:读取和执行、列出、写入(默认情况下可能缺少写入)

  • **将日志/标准输出文件夹复制到网站根文件夹,由于某些原因,此处会显示日志。(建议)

    根据提供的
    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的文件,您可以单击铅笔查看它。如果需要,您也可以下载该文件。

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

  • 如上所述,创建文件夹日志并授予对IIS\u IUSRS的写入权限
  • 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”
    ,我自己没有修改过,所以请考虑一下。。。