的Windows Azure网站登录流将在D:/home/logfiles
目录流写入到任何文本文件的信息,请网站。所以要求你的应用程序将它的日志文件写入这个目录。流支持是相当通用的,并且可以流式传输LogFiles文件夹下的任何文本文件。但是为了工作,文件需要可读,所以如果它是专门打开的,它将无法工作。
在Python中,考虑到可以同时运行应用程序的多个实例,因此可能会有点具有挑战性,因此文件锁定可能是一个问题。
解决方法是使用ConcurrentLogHandler,这将允许并发写访问日志文件。这需要pywin32(用于Windows扩展的Python),它在Windows Azure网站上默认不安装,因此您必须在应用程序中包含该依赖项。请确保包含适用于Windows Azure网站(此时为Python 2.7 32位)的Python运行时版本。
DjangoWAWSLogging示例项目显示如何做到这一点。见settings.py和views.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:\家\日志文件”。
此配置本身仍然不能解决问题,可能是因为根据Python's documentation,在Windows下“日志打开带有排他锁的文件”。
用示例代码检查我的[更新的答案](http://stackoverflow.com/a/17897972/376366)。 –