怎么把gunicorn的日志输出到console?
关于配置gunicorn下日志的各种问题
- 配置日志到console
- 配置日志输出到文件
- 配置日志输出到console+文件
配置到console
比较简单
# gunicorn.conf.py
accesslog = '-'
配置到日志log文件
一般Error级别的文件可能会特意用一个专属log记录下来
# gunicorn.conf.py
# 可以同时兼容不同类型的日志有不同的输出方式
accesslog = '-'
errorlog = os.path.join('/home/logs/', 'gunicorn-error.log')
同时配置到console+日志文件
同一种类型的日志比如accesslog想要有两种输出模式稍微复杂一点,可以配合用python自带的logging.handlers实现
logging自带了很多种类型的handlers,举例一种适合生产常用的handler:TimedRotatingFileHandler
特点:可以设置随着时间变化新生成日志文件,比如一天生成一个日志文件,方便后续排查日志搜索。
实现方式:
- 先定制一个logger,并配置好TimedRotatingFileHandler,用于将日志输出到文件
# g_logging.py
import logging
from gunicorn import glogging
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler
class CustomGunicornLogger(glogging.Logger):
def setup(self, cfg):
super().setup(cfg)
logger = logging.getLogger("gunicorn.access")
logger.setLevel(logging.INFO)
logger.handlers.append(TimedRotatingFileHandler('/home/logs/day.log', backupCount=10, when='D')) # 每天生成一个记录log文件,如果设置when为'M' 那就是一分钟一个log文件,最多备份backupCount=10个文件
- 将定制好的logger class 配置到gunicorn
# gunicorn.conf.py
logger_class = "g_logging.CustomGunicornLogger"
accesslog = '-'
- gunicorn启动服务,你就会得到std日志和带日期方便查询的log文件了