我需要将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))
并像这样运行女服务员服务器
python myapp_waitress.py
我应该在mylog.ini文件中放入什么来使女服务员将请求记录到文件中?我已经读过https://docs.pylonsproject.org/projects/waitress/en/stable/logging.html多次,但是作为一个新的pythonist并没有太多的意义。我想要的是一个简单的示例,它记录了来自Waitress的文件。
答案 0 :(得分:0)
不确定这是否适用于您的情况,但Flask提供了装饰器功能来记录请求
from flask import request
@app.before_request
def log_the_request():
logger(request)
答案 1 :(得分:0)
这是我的配置文件
server {
index index.html index.php;
root /var/www/html/public/;
location / {
try_files $uri $uri/ /index.php?$query_string @B;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass A:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location @B{
rewrite ^ / break;
proxy_pass http://B:8082;
}
}
您需要定义一个处理程序来写入您可以在 args 参数中指定的日志文件。
或者,如果您不想使用配置文件,您可以直接在基本配置中定义它,如下所示:
[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=