2013-05-03 3 views
1

내 앱이 설정 파일을 찾지 못하는 이유를 진단하려고합니다.
설정은 장고 도구 모음의 맨 아래에 표시되지만 역 추적 오류 보여줍니다프로덕션 서버를 디버깅하여 설정을 찾지 못하고 로깅 파일이 작동하지 않는 이유는 무엇입니까?

UndefinedError: 'settings' is undefined 

나는 그들이에서 뚜렷한이기 때문에이 볼 얻을하려면 코드에 다음과 같은 설정을 찾을 수없는 이유 추가를 쉘과 파이썬 경로에.

import logging 
logging.debug("settings.LANGUAGE_CODE: " settings.LANGUAGE_CODE) 

settings.py 파일에 정의 된 로그 파일에는 아무 것도 나타나지 않습니다. 여기

는 설정이 정의하는 방법입니다 :

LOG_FILENAME = 'askbot.log' 
logging.basicConfig(
    filename=os.path.join(os.path.dirname(__file__), 'log', LOG_FILENAME), 
    level=logging.CRITICAL, 
    format='%(pathname)s TIME: %(asctime)s MSG: %(filename)s:%(funcName)s:%(lineno)d %(message)s', 
) 

내가 쉘에서 직접 메시지를 기록하려고 시도 :

>> import logging 
>> logging.debug("does this show up in log file") 

아무것도 로그 파일에 없었다.

셸을 통해 로깅 구성을 보려고했습니다.

>> logging.__dict__ 
>> logging.basicConfig.__dict__ 

LOG_FILENAME은 표시되지 않았습니다.

로깅 메시지가 LOG_FILENAME에 표시되지 않는 이유는 무엇입니까?
구성을 테스트하기 위해 셸에서 로깅 메시지를 보낼 수 있습니까?

+0

'debug' 대신'critical'을 사용해보십시오. 대부분의 경우 구성은 디버그 메시지를 무시합니다. 'critical'는 가장 높은 내장 레벨이므로 로그에 표시되지 않으면 로깅 설정이 심각하게 손상되었거나 존재하지 않거나 찾을 수 없습니다. – J0HN

답변

2

로깅은 중요한 메시지 만 기록하도록 구성됩니다. 단기 접근 방식으로 logging.debug 대신 logging.critical을 사용하거나 구성에 level=logging.DEBUG을 사용하여 기록 할 메시지 수준을 낮출 수 있습니다.

또한 logging.* 방법은 루트 수준 로거를 사용합니다. 당신은

logger = logging.getLogger(logger_name) #logger name is often just __name__ 
logger.debug(whatever) 

자세한 내용은 logging documentation를 참조 같은 것을 구성에 더 로거를 제공하고 사용하여 단위를 추가 할 수 있습니다.