繁体   English   中英

Azure 应用服务上 Python 的本地日志在哪里?

[英]Where is local logs for Python on Azure App Service?

如果我在本地运行,我可以看到我的print()文本。 但即使在启用文件系统应用服务日志之后,我仍然看不到任何日志,无论是在_docker.log还是流式日志中。 在 Azure 应用服务上为 Python 生成本地日志的正确方法是什么?

为了关闭循环,我最终制作了一个简单的日志方法

def writeLog(log: str):
    basepath = path.dirname(__file__)
    today = date.today()
    filepath = path.abspath(path.join(basepath, "..", "..", "LogFiles", "MyBot_" + today.strftime("%Y-%m-%d") + ".log"))
    f = open(filepath, "a+")
    f.write(today.strftime("%Y-%m-%d %H:%M:%S") + " " + log)
    f.write("\n")
    f.close()

如果我不close() ,我将无法下载该文件。 将其与其他日志文件一起放在LogFiles中,可以更轻松地从 VS Code 中查看

我使用 Flask web 进行测试并按照以下文档设置 WSGI_LOG: 配置 FastCGI 处理程序,它将创建日志,但是日志文件只有StdErr日志,关于StdOut ,它始终为空白。

在此处输入图像描述

因此,我使用另一种解决方案将脚本的标准 output 重定向到某个日志文件。

import sys
sys.stdout = open('D:\\home\\LogFiles\\app.log', 'w')
print("test")

您可以配置上述代码,然后发布您的代码并运行它。

在此处输入图像描述

我遇到了类似的问题。 在我的情况下,日志记录与容器中的其他日志不一致。 最后,它似乎更像是一个日志缓冲问题,而不是 Azure 应用服务特有的问题。 通过在 Azure App Service 中设置以下环境变量来解决:设置 -> 容器 -> 应用程序设置

PYTHONUNBUFFERED = 1

在 docker 运行命令中,您可以将其设置为:

--env PYTHONUNBUFFERED=1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM