我将一个 Web 应用程序推送到 Azure。它适用于我的计算机,但不适用于 Azure。为了调试它,我想阅读应用程序在 Azure 上打印的内容。如何查看 Azure 的日志?
如果是 Heroku,我会跑 heroku logs
在 Azure 'portal' 上我找到了一个 URL 在 Azure 'portal' 中我找到了一个 URL 'FTP DIAGNOSTIC LOGS' ftp://waws-prod-db3-003.ftp.azurewebsites.windows.net/LogFiles但不能设法连接到它。我认为我们的 poxy 办公室防火墙阻止了 ftp。
我试过
azure site log tail
Run Code Online (Sandbox Code Playgroud)
但我收到一条毫无意义的错误信息
错误:禁止
Windows Azure 网站日志流会将写入D:/home/logfiles
网站目录中任何文本文件的信息流式传输。因此,要求您的应用程序将其日志文件写入此目录。流式传输支持相当通用,可以流式传输 LogFiles 文件夹下的任何文本文件。但要使其工作,该文件需要可读,因此如果以独占方式打开该文件,则该文件将无法工作。
在 Python 中,考虑到应用程序可能有多个实例同时运行,因此文件锁定可能是一个问题,因此这可能有点困难。
\n\n解决此问题的方法是使用ConcurrentLogHandler,它将允许对日志文件进行并发写入访问。这需要pywin32(Python for Windows 扩展),默认情况下 Windows Azure 网站上不安装它,因此您必须在应用程序中包含该依赖项。请务必包含 Windows Azure 网站使用的 Python 运行时的适当版本(目前为 Python 2.7 32 位)。
\n\nDjangoWAWSLogging示例项目展示了如何做到这一点。请参阅settings.py和views.py。正如项目的README中所解释的,此时日志只能在网站停止时才能下载。这可能是由于 ConcurrentLogHandler 以独占模式打开文件。参考这个问题。
\n\n此片段使用环境变量作为文件名来settings.py
配置日志处理程序:LOGFILE
\'ConcurrentLogHandler\':{\n \'level\': \'DEBUG\',\n \'class\': \'cloghandler.ConcurrentRotatingFileHandler\',\n \'formatter\': \'verbose\',\n \'filename\': os.getenv(\'LOGFILE\', \'django.log\')\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n由于日志流可以同时处理多个文件,因此让每个网站实例日志到不同的文件可能是更好的策略,如下所示:
\n\n\'handlers\': {\n \'logfile\': {\n \'level\':\'DEBUG\',\n \'class\':\'logging.handlers.RotatingFileHandler\',\n \'filename\': os.path.join(os.getenv(\'LOGPATH\', "."), str(uuid.uuid1()) + ".log"),\n \'maxBytes\': 1024 * 1024,\n \'backupCount\': 9,\n \'formatter\': \'standard\',\n },\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n其中 LOGPATH 是在 Windows Azure 网站中配置为“D:\\home\\logfiles”的环境变量。
\n\n此配置本身仍然无法解决问题,可能是因为根据Python 文档,在 Windows 下“日志记录使用独占锁打开文件”。
\n 归档时间: |
|
查看次数: |
1485 次 |
最近记录: |