2009-06-08 4 views
2

모듈 처리량에 사용할 수있는 변수를 정의하여 프로덕션 디버그 출력을 분리하려고합니다. 환경에서는 정의 할 수 없습니다. 모듈에서 클래스간에 재사용되는 전역에 대한 제안 사항은 무엇입니까? 또한이 코드를 사용하지 말라고 appengine에 알리기 위해이 변수 플래그를 구성하는 방법이 있습니다.파이썬에서 디버그 변수

답변

12

Google App Engine에서 완벽하게 지원되는 logging module을 살펴보십시오. 디버그, 경고, 오류 등과 같은 로깅 수준을 지정할 수 있습니다. 이들은 dev 서버 콘솔에 표시되며 요청 로그에도 저장됩니다.

당신이 dev에 서버를 실행하는 특정 코드를 실행 한 후 경우, 당신은이 작업을 수행 할 수 있습니다

if os.environ['SERVER_SOFTWARE'].startswith('Development'): 
    print 'Hello world!' 

SERVER_SOFTWARE 변수는 항상 구글 앱 엔진에 의해 설정된다.

모듈 특정 변수의 경우; 모듈은 개체이며 다른 개체와 마찬가지로 값을 가질 수 있습니다.

my_module.debug = True 
+0

+1 로깅 모듈에 대한 설명은 실제로 @ dhaval의 실제 문제에 대한 가장 좋은 답변입니다. –

+0

thx Blixit, 나는 server_software 변수를 알지 못했습니다. – dhaval

+0

@dhaval : 모든 OS에서 환경 변수를 사용할 수 있으므로이 기술은 모든 곳에서 작동합니다. GAE가 아닌 경우 환경 변수를 직접 설정하십시오. –

1

모든 모듈 수준 변수는 모듈의 모든 클래스에 대해 전역입니다. 단일, 모듈 수준 DEBUG 변수가이 두 클래스의 모든 인스턴스에 의해 발견됩니다 mymodule.py

import this 
import that 

DEBUG = True 

class Foo(object): 
    def __init__(self): 
     if DEBUG: print self.__class__, "__init__" 
     # etc. 

class Bar(object): 
    def do_work(self): 
     if DEBUG: print self.__class__, "do_work" 
     # etc. 

:

여기 내 파일입니다. 다른 모듈 (예 : this.pythat.py)은 자신의 DEBUG 개의 변수를 가질 수 있습니다. 이들은 this.DEBUG 또는 that.DEBUG이 될 것이며 관련이 없습니다.

+0

thx @Lott, 나는 __main에서 변수를 정의하고 실패했습니다. – dhaval

관련 문제