簡體   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