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

2024-04-26 21:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 方法docker文本log应用程序azureprint
3条回答

我遇到了类似的问题。在我的例子中,日志记录与容器中的其他日志不一致。最后,这似乎更多的是一个日志缓冲问题,而不是Azure应用程序服务特有的问题。通过在Azure应用程序服务中设置以下环境变量解决了此问题:设置->;集装箱->;应用程序设置

PYTHONUNBUFFERED = 1

在docker run命令中,您将其设置为:

 env PYTHONUNBUFFERED=1

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

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代码中查看

我使用一个Flask web进行测试,并按照以下文档设置WSGI_日志:Configure the FastCGI handler,它将创建日志,但是日志文件只有StdErr日志,大约StdOut它始终为空

enter image description here

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

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

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

enter image description here

相关问题 更多 >