我有一个 Python 应用程序,它使用 Apache 和 mod_wsgi 部署在生产环境中。 在我的应用程序中,我设置了日志记录,如下所示:
配置
文件:
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)
此代码在创建 Flask 应用程序之前执行。
所有非错误/异常的日志记录都会正确记录到此自定义文件中。
但是,如果在 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)
关于Python mod_wsgi 写入自定义日志文件而不是 apache error_log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26018565/