4

我开始使用--paster运行 Pyramid 的选项来启动 gunicorn。

gunicorn -w 1 --paster development.ini

gunicorn 自己的消息在控制台上显示得很好,例如

2014-02-20 22:38:50 [44201] [INFO] Starting gunicorn 18.0
2014-02-20 22:38:50 [44201] [INFO] Listening at: http://0.0.0.0:6543 (44201)
2014-02-20 22:38:50 [44201] [INFO] Using worker: sync

但是,我的 Pyramid 应用程序中的日志消息没有显示出来。

如果我使用pserve development.ini用作waitressWSGI 服务器的 ,则日志消息会很好地显示在控制台上。

我的development.ini包括一个非常普通的日志记录配置部分。

[loggers]
keys = root, apipython

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_apipython]
level = DEBUG
handlers =
qualname = apipython

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = DEBUG
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s

我不知道为什么当我使用 gunicorn 时日志没有出现。

4

2 回答 2

2

不要将 pserve 与 gunicorn 一起使用,它已被弃用,并且很可能会在下一个版本中被删除。

Gunicorn具有“logconfig”设置,只需通过命令行参数将其设置为您的配置:

gunicorn -w 1 --paster development.ini --log-config development.ini

或在相同的配置中:

[server:main]
use = egg:gunicorn#main
logconfig = %(here)s/development.ini
于 2014-06-20T19:12:43.570 回答
1

这是因为“pserve”命令不仅会启动服务器并加载应用程序,还会设置日志记录。而“gunicorn --paster”只是加载应用程序。要修复它,您可以在应用程序上显式设置日志记录:

from pyramid.config import Configurator
from pyramid.paster import setup_logging

def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application. """
    setup_logging(global_config['__file__'])
    config = Configurator(settings=settings)
    # Configure application 
    return config.make_wsgi_app()

或者正如您在评论中指出的那样,在配置文件中更改服务器并使用“pserve”命令:

[server:main]
use = egg:gunicorn#main 
于 2014-02-25T09:00:11.437 回答