Python mod_wsgi写入自定义日志文件,而不是Apache error_log

问题描述:

我有一个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以便将所有内容写入此处配置的日志文件?

添加您的记录器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