2014-09-24 3 views
1

아파치와 mod_wsgi를 사용하여 프로덕션 환경에 배포 된 파이썬 애플리케이션이 있습니다.파이썬 mod_wsgi 아파치 대신 사용자 정의 로그 파일에 쓰기 error_log

config 파일 :

log_file = os.path.dirname(os.path.abspath(__file__)) + "/app.log" 
log_level = logging.DEBUG 

__init__.py 파일 : 플라스크 응용 프로그램이 만들어지기 전에이 코드가 실행됩니다

root_logger = logging.getLogger() 
root_logger.setLevel(config.log_level) 

log_format = logging.Formatter("%(asctime)s [%(levelname)s] [%(name)s] %(message)s") 

file_handler = logging.FileHandler(config.log_file) 
file_handler.setFormatter(log_format) 

stream_handler = logging.StreamHandler() 
stream_handler.setFormatter(log_format) 

root_logger.addHandler(file_handler) 
root_logger.addHandler(stream_handler) 

를 다음과 같이 내 응용 프로그램에서 , 내가 설치 로깅이있다.

오류/예외가 아닌 모든 로깅은이 사용자 지정 파일에 올바르게 로깅됩니다.

그러나 웹 서버가 실행되는 동안 예외가 생성되면 여기에 구성된 오류 대신 Apache 오류 로그에 오류가 기록됩니다. 파이썬의 로깅/mod_wsgi/아파치를 어떻게 설정하여 모든 것을 여기서 설정 한 로그 파일에 기록 할 수 있습니까?

답변

2

flask error handling docs에서, 응용 프로그램 로거를 WSGI하기 위해 로거를 추가 :이 치료를했다

if not app.debug: 
    import logging 
    from themodule import TheHandlerYouWant 
    file_handler = TheHandlerYouWant(...) 
    file_handler.setLevel(logging.WARNING) 
    app.logger.addHandler(file_handler) 
+0

, 정말 고마워. – Cristian

+1

추가하기 만하면 위에서 설정 한 로깅 구성은 오류를 올바른 파일에 로깅하는데도 사용되었습니다. 나는 그 해결책이 다음을 제거하는 것이라는 사실을 발견했다 :'app.debug = True' 그리고 모든 지정된 로깅이 예상대로 작동했다. – Cristian

+0

문제를 파악했는지 확인하는 것이 좋습니다. –