下面是一些非常简单的烧瓶代码。我写了一个http api,它将返回'你好'并且记录字符串'你好'如果您向http://127.0.0.1:5000/hello
发送请求,请进入/tmp/mylog.log有人告诉我,如果多个进程将日志写入一个文件会有问题。因为文件上没有进程级别锁定。因此日志的内容可能会混乱。
但如果我在uwsgi下面的烧瓶代码下面运行会有多个问题。所以多个过程。然后我认为会有问题。
但我在测试时没有发现任何问题。 那么为什么没有问题呢?它应该有问题吗?
import logging
from flask import Flask
app = Flask(__name__)
# The only important thing here is to specify the log file /tmp/mylog.log
file_handler = logging.FileHandler(filename='/tmp/mylog.log')
formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
file_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(file_handler)
logger.setLevel(logging.INFO)
@app.route('/hello')
def hello():
logger.info('hello')
return 'hello'
答案 0 :(得分:1)
Flask什么也没做。 Python日志记录的默认值是输出到sys.stdout
。当使用uWSGI或Gunicorn之类的东西时,他们会将每个worker的stdout收集到你配置的日志文件中。或者您可以配置Python的日志记录系统以输出您想要的位置和方式,尽管这样做不那么简单。通常,让WSGI服务器从工作程序收集和输出stdout是最简单的。
答案 1 :(得分:0)
您可以使用from flask import Flask, render_template
app = Flask(__name__)
@app.route('/'):
def index():
app.logger.info("Hit the main route !")
return render_template('index.html')
在Flask中记录内容。即使多个Flask进程正在运行,它也能正常工作。
logging
如果您想自定义日志消息,您还可以使用Python的import logging
log = logging.getLogger(__name__)
库,以及它的无限可自定义日志。
只需在文件顶部添加以下内容:
log.debug("complex mathematical equations and heavy outputs")
log.info("the sky is blue")
log.error("something's not right")
log.critical("dangeeeer ! its's blowing up !")
和,记录消息:
const Sequelize = require('Sequelize');
//...
class Application {
Sequelize = Sequelize;
}
您可以通过Google在线阅读许多教程(如设置文件处理程序,格式化程序,记录程序......)。