You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让本地部署的Azure Functions主机输出函数调用日志?

本地部署Azure Functions Host日志问题排查

问题背景

因组织无法使用Azure,在本地服务器安装Azure Functions Host后运行正常,但日志输出为简化版本,无法查看函数调用日志,期望日志输出与本地调试时一致。

已执行操作

  • 安装Asp.Net Core 6.0 hosting bundle
  • 将Azure Functions host解压至C:\inetpub\Functions.X.X.X
  • 修改C:\Windows\System32\inetsrv\config\applicationHost.config的'authentication'部分以允许覆盖
  • 将函数应用发布至文件夹
  • 添加'Logs'文件夹并为IIS_IUSRS用户赋予完全权限
  • 使用以下web.config配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore" />
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore
        processPath="C:\inetpub\Functions.4.14.0\4.14.0\64bit\Microsoft.Azure.WebJobs.Script.WebHost.exe"
        stdoutLogEnabled="true"
        stdoutLogFile=".\Logs\stdout"
        hostingModel="InProcess">
      <environmentVariables>
        <environmentVariable name="AzureWebJobsStorage" value="UseDevelopmentStorage=true" />
        <environmentVariable name="FUNCTIONS_WORKER_RUNTIME" value="dotnet" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>
  • 使用以下host.json配置:
{
    "version": "2.0",
    "tracing": {
        "consoleLevel": "verbose"
    },
    "logging": {
        "fileLoggingMode": "always",
        "logLevel": {
            "default": "Information"
        }
    }
}

期望日志输出

info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7201
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5201
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\Repositories\iPM Web API\src\WaikatoDhb.Ipm.Api\

解决方案

1. 补充环境变量配置

在web.config的<environmentVariables>节点中添加以下变量:

<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="FUNCTIONS_LOGGING_VERBOSE" value="true" />
  • ASPNETCORE_ENVIRONMENT=Development:让主机以开发模式运行,输出更详细的调试级日志
  • FUNCTIONS_LOGGING_VERBOSE=true:强制开启函数运行时的全量日志输出

2. 优化host.json日志配置

更新host.json,补充函数运行时的日志规则和输出配置:

{
    "version": "2.0",
    "tracing": {
        "consoleLevel": "verbose",
        "fileLevel": "verbose"
    },
    "logging": {
        "fileLoggingMode": "always",
        "logLevel": {
            "default": "Information",
            "Microsoft.Azure.WebJobs": "Information",
            "Function": "Information"
        },
        "console": {
            "isEnabled": true,
            "logLevel": {
                "default": "Information"
            }
        }
    }
}
  • 新增Microsoft.Azure.WebJobs和Function的日志级别设置,确保函数触发、执行等核心操作日志被捕获
  • 显式启用控制台日志输出,保证stdout能输出完整的日志内容

3. 确认日志路径与权限

  • 检查web.config中stdoutLogFile的路径,建议使用绝对路径(如C:\inetpub\YourFunctionApp\Logs\stdout)避免相对路径解析问题
  • 再次确认IIS_IUSRS用户对Logs文件夹拥有写入权限

4. 重启IIS站点与应用池

修改配置后,必须重启对应的IIS站点和应用池,确保新配置生效:

  • 打开IIS管理器,找到目标站点右键选择重启
  • 同步重启对应的应用池,清除配置缓存

完成以上操作后,触发函数调用即可在Logs目录下的stdout日志文件中看到与本地调试一致的详细日志,包括函数调用的完整记录。

内容的提问来源于stack exchange,提问作者Andrew Williamson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:55:19