6

我需要将 http 请求记录到运行 Flask 应用程序的 Waitress 服务器中的文件中。我想将 Flask 应用程序与服务器分开,所以我创建了一个文件

myapp_waitress.py

from myflaskapp import app
from waitress import serve
from paste.translogger import TransLogger
import logging.config
import os

BASE_DIR = os.getcwd()
log_ini_file = os.path.join(BASE_DIR, "mylog.ini")

logging.config.fileConfig(log_ini_file)
logger = logging.getLogger('waitress')

serve(TransLogger(app, setup_console_handler=False))

并像运行 Waitress 服务器一样

python myapp_waitress.py

我应该在 mylog.ini 文件中放入什么来让 Waitress 将请求记录到文件中?我已经阅读了https://docs.pylonsproject.org/projects/waitress/en/stable/logging.html好几次,但作为一个新的 pythonist 并不能理解它。我想要的是来自 Waitress 的文件记录的简单示例。

4

2 回答 2

0

不确定这是否适用于您的情况,但 Flask 提供了一个装饰器功能来记录请求

from flask import request

@app.before_request
def log_the_request():
    logger(request)
于 2019-11-12T16:46:55.513 回答
0

这是我的配置文件

[loggers]
keys=root

[handlers]
keys=logging_handler

[formatters]
keys=simple_formatter

[logger_root]
level=INFO
handlers=logging_handler

[handler_logging_handler]
formatter=simple_formatter
class=handlers.RotatingFileHandler
maxBytes=31457280
level=INFO
args=('yourlogfile.log',)

[formatter_simple_formatter]
format=%(asctime)s %(levelname)s %(name)s %(threadName)s : %(message)s
datefmt=

您需要定义一个处理程序来写入您可以在 args 参数中指定的日志文件。

或者,如果您不想使用配置文件,您可以直接在基本配置中定义它,如下所示:

logging.basicConfig(
    filename='yourlogfile.log', 
    level=logging.INFO,
    ...
)
于 2021-05-06T11:05:07.523 回答