2012-05-03 4 views
1

web.py 애플리케이션을 개발하고 독립 실행 형 모드 (명령 행에서 myapp.py 실행)에서 많은 테스트를 거쳤으며 stdout 출력은 디버깅에 매우 유용했습니다. 이제 아파치/mod_wsgi에서 실행하고 많은 일들이 작동하지 않습니다. 예를 들어, 작동하는 데 사용되는 기본 인증 스키마는 주어진 사용자 이름/암호를 항상 거부합니다. 내가 필요로하는 첫번째 것은 내가 가지고 왔던 디버그 메시지를 볼 수있는 것이다. 그러나 스크립트의 출력은 어디에도 없습니다.Apache/mod_wsgi에서 실행할 때 web.py의 stdout 로그를 되 찾는 방법은 무엇입니까?

어떻게 "디버그 인쇄물"을 다시 사용할 수 있습니까?

많은 문제가 해결되기 전에는 내 앱의 특정 문제에 대해 질문하고 싶지 않습니다.

+0

어떤 mod_wsgi 버전을 사용하고 있습니까? mod_wsgi 3.0+를 사용하고 있는지 확인하고 'print'출력이 아파치 오류 로그에 저장되어야합니다. –

답변

1
>>> class STDOUT(object): 
    def __init__(self, next): 
     self.next = next 
     self.file = open('stdout.txt', 'w') 
    def write(self, thing): 
     self.file.write(thing) 
     l.append(thing) 
     self.next.write(thing) 

>>> import sys 
>>> s = STDOUT(sys.stdout) 
>>> sys.stdout = s 
>>> l = [] 
>>> print 4 
4 
>>> l 
['4', '\n'] 
+0

web.py에서 작동하지 않습니다. "이전"stdout에 쓰지 않는 압축 된 버전의 코드를 사용했으며 내부 배열에 추가하지 않았습니다. 아무것도 파일에 들어 가지 않습니다. – JCCyC

+0

이것이 작동하지 않아야하는 이유를 이해할 수 없습니다. 그것은 내게 수년 동안 일했습니다. 어쩌면 일부 ImportError가 발생합니까? try : except : 전체 모듈 주위에 그리고 어딘가에 파일을 썼는가? traceback.print_exc (file = ...)를 사용하여 오류를 인쇄 할 수 있습니다. – User