Gunicorn gevent worker 日志记录问题

Gunicorn gevent worker logging issues

我有一个 gunicorn 服务器 运行 1 名工人。我在请求期间使用日志记录模块。 None 其中出现在标准输出中。 我知道 gevent workers monkey patch all 所以我假设在请求期间完成的任何登录都应该出现在主线程标准输出上。

gunicorn的app解析为django的wsgi应用

gunicorn -c gunicorn.py core.wsgi:application

gunicorn.py 我有:

bind = '0.0.0.0:8080'
backlog = 2048
workers = 1
worker_class = 'gevent'
worker_connections = 1000
timeout = 60
keepalive = 2

proc_name = None

def post_fork(server, worker):
    server.log.info("Worker spawned (pid: %s)", worker.pid)


def pre_fork(server, worker):
    pass


def pre_exec(server):
    server.log.info("Forked child, re-executing.")


def when_ready(server):
    server.log.info("Server is ready. Spawning workers")


def worker_int(worker):
    worker.log.info("Worker received INT or QUIT signal")

    import threading, sys, traceback
    id2name = dict([(th.ident, th.name) for th in threading.enumerate()])
    code = []
    for thread_id, stack in sys._current_frames().items():
        code.append("\n# Thread: %s(%d)" % (id2name.get(thread_id, ""),
                                            thread_id))
        for filename, line_no, name, line in traceback.extract_stack(stack):
            code.append('File: "%s", line %d, in %s' % (filename,
                                                        line_no, name))
            if line:
                code.append("  %s" % (line.strip()))
    worker.log.debug("\n".join(code))


def worker_abort(worker):
    worker.log.info("Worker received SIGABRT signal")

在请求函数中,我简单地输入了

import logging
logging.error('test'))

它仅在工作人员完成其请求后才执行此日志。 而其他一些日志甚至都没有这样显示。

import logging
logger = logging.getLogger('test_logger'))
logger.setLevel(logging.DEBUG)
logger.error('test')

如果您需要我提供任何其他信息来帮助我解决此问题,请联系我们。

只需要将其添加到 gunicorn.py

errorlog = '-'
loglevel = 'info'
accesslog = '-'