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

Azure Web应用执行部署槽交换时如何排除特定文件夹不参与交换

Azure Web 应用部署槽交换目录排除问题解答

核心结论

Azure App Service 的部署槽交换逻辑默认是全站点内容同步,原生不支持配置排除特定文件夹不参与交换,你遇到的日志目录随槽交换错位的问题,可以通过以下几种适配方案解决:

方案1:将日志写入槽专属的持久化路径

  • Linux 容器版 Azure Web App 自带每个槽独立的持久化存储目录 $HOME/LogFiles,该目录内容不会随槽交换发生迁移,你可以直接修改 PHP 应用的日志配置,将日志写入路径指向 $HOME/LogFiles/[自定义应用目录] 即可。
  • 如果你需要自定义日志存储路径,可以借助槽专属应用设置实现路径隔离:
    1. 分别进入生产槽、预发布槽的配置页,添加键名为 APP_LOG_PATH 的应用设置,生产槽设值为 /home/site/logs/prod,预发布槽设值为 /home/site/logs/staging,添加时务必勾选「部署槽设置」选项,保证该配置不会随槽交换被同步。
    2. 修改 PHP 应用的日志配置,读取 APP_LOG_PATH 环境变量作为日志写入根目录,应用启动时会自动适配当前槽的日志路径。

方案2:将日志输出到容器标准流

自定义 Docker 镜像场景下,你可以修改 PHP 配置,将应用日志直接输出到 stdout 和 stderr,Azure App Service 会自动收集所有容器标准输出的日志,存储到对应槽的专属日志存储中,完全不受槽交换影响。你可以直接在对应槽的「日志流」页面查看实时日志,也可以配置诊断设置将日志归档到存储账号、Log Analytics 等服务,归档日志会自动区分槽来源。

方案3:启动脚本自动适配槽专属日志路径

如果你不想修改现有应用的日志路径配置,可以在容器的启动脚本中新增逻辑:读取 Azure 自动注入的槽标识环境变量 WEBSITE_SLOT_NAME(值为当前槽的名称),启动时创建 /var/www/html/logs/${WEBSITE_SLOT_NAME} 目录,再将应用的默认日志目录软链接到该路径,保证不同槽的日志实际写入到不同物理路径,槽交换后软链接会随容器重启重新生成,不会出现日志错位问题。


内容的提问来源于stack exchange,提问作者Youssef CH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:42:01