윈도우 Azure 웹 사이트 스트리밍의 D:/home/logfiles
디렉토리에있는 텍스트 파일에 기록 된 정보를 스트리밍 할 것이다 로그인하여 웹 사이트. 따라서 애플리케이션이 로그 파일을이 디렉토리에 씁니다. 스트리밍 지원은 매우 일반적이며 LogFiles 폴더 아래에있는 텍스트 파일을 스트리밍 할 수 있습니다. 하지만 작동하려면 파일을 읽을 수 있어야하므로 독점적으로 열면 작동하지 않습니다.
파이썬에서는 응용 프로그램의 여러 인스턴스가 동시에 실행될 수 있으므로 파일 잠금이 문제가 될 수 있다고 생각하면 다소 어려울 수 있습니다.
이 문제를 해결하려면 ConcurrentLogHandler을 사용하면 로그 파일에 대한 동시 쓰기 액세스가 허용됩니다. 여기에는 Windows Azure 웹 사이트에 기본적으로 설치되지 않는 pywin32 (Windows 확장 용 Python)이 필요하므로 해당 종속성을 응용 프로그램과 함께 포함시켜야합니다. Windows Azure 웹 사이트 (현재 Python 2.7 32 비트)에서 사용되는 Python 런타임에 적절한 버전을 포함하십시오.
DjangoWAWSLogging 샘플 프로젝트에서이를 수행하는 방법을 보여줍니다. settings.py 및 views.py을 참조하십시오. 프로젝트의 README에서 설명했듯이 현재 웹 사이트가 중지 된 경우에만 로그를 다운로드 할 수 있습니다. 이는 ConcurrentLogHandler가 배타 모드에서 파일을 열었 기 때문일 수 있습니다. this question을 참조하십시오.
'ConcurrentLogHandler':{
'level': 'DEBUG',
'class': 'cloghandler.ConcurrentRotatingFileHandler',
'formatter': 'verbose',
'filename': os.getenv('LOGFILE', 'django.log')
},
로그 스트리밍이 동시에 여러 파일을 처리 할 수 있기 때문에, 각이 더 나은 전략은 아마 :
는 settings.py
의이 조각은 파일 이름으로 LOGFILE
환경 변수를 사용하여 로그 핸들러를 구성 웹 사이트의 예는 다음과 같이, 다른 파일에 로그 :
LOGPATH과 같이 윈도우 Azure 웹 사이트에 구성된 환경 변수입니다
'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',
},
},
"D : \ 홈 \ 로그 파일".
이 구성은 여전히 문제를 해결하지 못합니다. 아마도 Python's documentation에 따르면 Windows에서 "로깅은 단독 잠금을 사용하여 파일을 엽니 다"때문일 수 있습니다.
샘플 코드로 [업데이트 된 답변] (http://stackoverflow.com/a/17897972/376366)을 확인하십시오. –