2014-09-24 67 views
1

我有一個Python應用程序,它使用Apache和mod_wsgi在生產環境中部署。 在我的應用程序,我已經安裝日誌如下:Python mod_wsgi寫入自定義日誌文件,而不是Apache 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) 

創建瓶應用程序之前,該代碼被執行。

所有不是錯誤/異常的記錄都被正確記錄到此自定義文件中。

但是,如果在Web服務器運行時產生異常,則會將錯誤寫入Apache的錯誤日誌中,而不是寫入此處配置的錯誤日誌中。如何配置Python的logging/mod_wsgi/Apache以便將所有內容寫入此處配置的日誌文件?

回答

2

添加您的記錄器WSGI應用程序記錄程序,從flask error handling docs

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 2014-09-25 08:08:40

+1

只需添加,我上面設置的日誌記錄配置也可以將錯誤記錄到正確的文件中。我發現解決方案是刪除以下內容:'app.debug = True',然後所有指定的日誌都按預期工作。 – Cristian 2014-09-25 08:32:43

+0

很高興知道您已經找出問題所在。 – 2014-09-25 09:15:41