如何阅读Azure日志?

时间:2013-07-26 15:32:50

标签: azure

我将网络应用推送到Azure。它在我的计算机上运行,​​但在Azure上运行。为了调试它,我想阅读在Azure上打印的应用程序。如何查看Azure的日志?

如果是Heroku,我会跑heroku logs

在Azure“门户网站”上,我找到了一个网址 在Azure“门户网站”中,我找到了一个URL'FTP诊断日志 'ftp://waws-prod-db3-003.ftp.azurewebsites.windows.net/LogFiles但无法连接到它。我认为我们的poxy办公室防火墙阻止了ftp。


我试过

azure site log tail

但是我收到了无意义的错误消息

  

错误:禁止

2 个答案:

答案 0 :(得分:2)

Windows Azure网站日志流将流式信息写入您网站的D:/home/logfiles目录中的任何文本文件。因此要求是您的应用程序将其日志文件写入此目录。流支持非常通用,可以流式传输LogFiles文件夹下的任何文本文件。但是要使它工作,文件需要是可读的,所以如果它是独占打开的,它将无法工作。

在Python中,考虑到可能有多个应用程序同时运行的实例,这可能会有些挑战,因此文件锁定可能是一个问题。

解决方法是使用ConcurrentLogHandler,这将允许对日志文件进行并发写访问。这需要pywin32(Python for Windows扩展),默认情况下不会在Windows Azure网站上安装,因此您必须将该依赖项与应用程序一起包含在内。请确保为Windows Azure网站使用的Python运行时包含适当的版本(此时为Python 2.7 32位)。

DjangoWAWSLogging示例项目显示了如何执行此操作。请参阅settings.pyviews.py。正如项目README中所解释的那样,此时只能在网站停止时下载日志。这可能是因为ConcurrentLogHandler以独占模式打开文件。请参阅this question

来自settings.py的此片段使用LOGFILE环境变量作为文件名来配置日志处理程序:

'ConcurrentLogHandler':{
    'level': 'DEBUG',
    'class': 'cloghandler.ConcurrentRotatingFileHandler',
    'formatter': 'verbose',
    'filename': os.getenv('LOGFILE', 'django.log')
},

由于日志流可以同时处理多个文件,因此将每个网站实例登录到不同的文件可能是更好的策略,如下所示:

'handlers': {
    'logfile': {
        'level':'DEBUG',
        'class':'logging.handlers.RotatingFileHandler',
        'filename': os.path.join(os.getenv('LOGPATH', "."), str(uuid.uuid1()) + ".log"),
        'maxBytes': 1024 * 1024,
        'backupCount': 9,
        'formatter': 'standard',
    },
},

其中LOGPATH是在Windows Azure网站中配置为" D:\ home \ logfiles"的环境变量。

此配置本身仍然无法解决问题,可能是因为,根据Python's documentation,在Windows"日志记录打开带有排他锁的文件"。

答案 1 :(得分:0)

在门户网站中,您必须为您创建的VM启用日志诊断,然后您才能从门户网站本身读取日志​​。