【发布时间】:2020-03-25 23:00:24
【问题描述】:
我有以下脚本,我只希望将“DEBUG”日志消息记录到文件中,而不是屏幕上。
from flask import Flask, request, jsonify
from gevent.pywsgi import WSGIServer
import usaddress
app = Flask(__name__)
from logging.handlers import RotatingFileHandler
import logging
#logging.basicConfig(filename='error.log',level=logging.DEBUG)
# create a file to store weblogs
log = open('error.log', 'w'); log.seek(0); log.truncate();
log.write("Web Application Log\n"); log.close();
log_handler = RotatingFileHandler('error.log', maxBytes =1000000, backupCount=1)
formatter = logging.Formatter(
"[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s"
)
log_handler.setFormatter(formatter)
app.logger.setLevel(logging.DEBUG)
app.logger.addHandler(log_handler)
@app.route('/')
def hello():
return "Hello World!"
@app.route("/parseAddress", methods=["POST"])
def parseAddress():
address = request.form['address']
return jsonify(usaddress.tag(address)), 200
if __name__ == '__main__':
# app.run(host='0.0.0.0')
http_server = WSGIServer(('', 5000), app, log=app.logger)
http_server.serve_forever()
但现在,甚至“INFO”消息也被记录到文件和屏幕上。我怎样才能只将“DEBUG”消息记录到文件中而没有记录到屏幕上?
【问题讨论】:
-
您可以为每个处理程序分别设置
level。我记得log_handler.setLevel(...)。但可能您必须手动创建控制台处理程序 (StreamHandler) 才能访问此处理程序。 -
Python官方文档:Logging Cookbook