ruo*_*ola 4 python logging flask
Flask 会自动进行各种日志记录,例如当收到 POST 请求时 Flask 会自动记录它:
Run Code Online (Sandbox Code Playgroud)127.0.0.1 - - [05/Jul/2019 18:18:16] "POST /test/ HTTP/1.1" 200 -
问题是此日志记录是完成到 的stderr,我希望它使用默认格式进行所有相同的日志记录,但sys.stdout改为记录到 。
我尝试过这样的事情:
import logging
import sys
app = flask.Flask(__name__)
handler = logging.StreamHandler(sys.stdout)
app.logger.addHandler(handler)
Run Code Online (Sandbox Code Playgroud)
根据Flask 的文档我尝试过:
import sys
from logging.config import dictConfig
dictConfig({
'version': 1,
'formatters': {'default': {
'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
}},
'handlers': {'wsgi': {
'class': 'logging.StreamHandler',
'stream': 'sys.stdout',
'formatter': 'default'
}},
'root': {
'level': 'INFO',
'handlers': ['wsgi']
}
})
app = flask.Flask(__name__)
Run Code Online (Sandbox Code Playgroud)
但第一个没有达到预期的效果,第二个就崩溃了。
根据@RomanPerekhrest的评论,这完成了工作:
import sys
from logging.config import dictConfig
dictConfig({
'version': 1,
'formatters': {'default': {
'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
}},
'handlers': {'wsgi': {
'class': 'logging.StreamHandler',
'stream': 'ext://sys.stdout', # <-- Solution
'formatter': 'default'
}},
'root': {
'level': 'INFO',
'handlers': ['wsgi']
}
})
app = flask.Flask(__name__)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10720 次 |
| 最近记录: |