Gunicorn 不记录错误和打印语句
Gunicorn not logging errors and print statements
我正在尝试 运行 使用 gunicorn 的烧瓶应用程序,并记录它的错误和对文件的访问。
访问日志工作正常,但问题出现在错误日志文件中。
错误日志文件设法将错误记录到日志文件中,但一两天后它不再在文件中附加任何错误或打印语句。
以下是我的gunicorn服务配置
[Unit]
Description=Gunicorn service
After=network.target
[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/usr/bin/gunicorn3 --workers 3 --capture-output --log-level debug --access-logfile /logs/access.log --error-logfile /logs/error.log --bind unix:flaskapp.sock -m 007 app:app --reload
[Install]
WantedBy=multi-user.target
我无法找到导致相同问题的原因。
我删除了该文件,它运行良好了一段时间,然后导致了同样的错误。
您可以使用 python 日志记录 class 并在 app.py 中定义应用记录器。您还需要在应用程序中设置 gunicorn 日志记录器。
import logging
from flask import Flask, jsonify
app = Flask(__name__)
if __name__ != '__main__':
gunicorn_logger = logging.getLogger('gunicorn.error')
app.logger.handlers = gunicorn_logger.handlers
app.logger.setLevel(gunicorn_logger.level)
@app.route('/')
def default_route():
"""Default route"""
app.logger.debug('this is a DEBUG message')
app.logger.info('this is an INFO message')
app.logger.warning('this is a WARNING message')
app.logger.error('this is an ERROR message')
app.logger.critical('this is a CRITICAL message')
return jsonify('hello world')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000, debug=True)
我正在尝试 运行 使用 gunicorn 的烧瓶应用程序,并记录它的错误和对文件的访问。 访问日志工作正常,但问题出现在错误日志文件中。
错误日志文件设法将错误记录到日志文件中,但一两天后它不再在文件中附加任何错误或打印语句。
以下是我的gunicorn服务配置
[Unit]
Description=Gunicorn service
After=network.target
[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/usr/bin/gunicorn3 --workers 3 --capture-output --log-level debug --access-logfile /logs/access.log --error-logfile /logs/error.log --bind unix:flaskapp.sock -m 007 app:app --reload
[Install]
WantedBy=multi-user.target
我无法找到导致相同问题的原因。 我删除了该文件,它运行良好了一段时间,然后导致了同样的错误。
您可以使用 python 日志记录 class 并在 app.py 中定义应用记录器。您还需要在应用程序中设置 gunicorn 日志记录器。
import logging
from flask import Flask, jsonify
app = Flask(__name__)
if __name__ != '__main__':
gunicorn_logger = logging.getLogger('gunicorn.error')
app.logger.handlers = gunicorn_logger.handlers
app.logger.setLevel(gunicorn_logger.level)
@app.route('/')
def default_route():
"""Default route"""
app.logger.debug('this is a DEBUG message')
app.logger.info('this is an INFO message')
app.logger.warning('this is a WARNING message')
app.logger.error('this is an ERROR message')
app.logger.critical('this is a CRITICAL message')
return jsonify('hello world')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000, debug=True)