python - Flask stdout 记录器消息未反映在 apache error_log 中
问题描述
我正在构建一个在 apache httpd 服务器上运行的烧瓶应用程序。
我想将烧瓶应用程序的所有 app.logger 消息推送到应用程序特定的日志文件以及 apache error_log 文件(通过 stdout 日志处理程序)。
from flask import Flask
import logging
import sys
from logging import Formatter, FileHandler
app = Flask(__name__)
logFileHandler = logging.FileHandler(filename="test.log")
logFileHandler.setLevel(logging.DEBUG)
logStdoutHandler = logging.StreamHandler(stream=sys.stdout)
logStdoutHandler.setLevel(logging.DEBUG)
app.logger.addHandler(logStdoutHandler)
app.logger.addHandler(logFileHandler)
app.logger.setLevel(logging.DEBUG)
app.logger.error("main test")
@app.route('/')
def hello():
app.logger.error("hello")
print("hello")
return 'Hello'
输出: test.log:有两个 app.logger() 调用的条目
main test
hello
apache error_log:只有来自主 app.logger() 调用的日志。(假设,日志重复可能与flask添加的default_handler有关)
ERROR in home: main test
main test
- 为什么 hello() 方法内部的 app.logger() 调用仅在 error_log 中丢失,而在 test.log 文件中没有?
- 有没有更好的方法将应用程序日志与应用程序日志文件一起推送到 apache error_log?
解决方案
推荐阅读
- go - 是否有更优雅的方式来声明新变量并同时使用全局变量
- python - 将数字四舍五入到特定数量的 sig figs python
- c++ - C++:根据 int 值的基数使用条件格式打印
- ios - 世博会 35. Facebook 授权。iOS 上的错误行为
- python - cv2 & list 操作导致内存不足错误
- python - 将 pandas.io.parsers.TextFileReader 的输出写入 pandas.DataFrame
- javascript - 如何使用重复功能重置所有内容并重新运行所有内容?
- three.js - 如何禁用三个通知消息?
- java - 在嵌套 JAR 内的文件夹中查找文件名
- html - 防止flexbox项目根据段落拉伸