【问题标题】:Where does Django stdout output go when running with nginx and Gunicorn?使用 nginx 和 Gunicorn 运行时,Django 标准输出输出到哪里?
【发布时间】:2020-04-18 17:00:30
【问题描述】:

例如,在我的 my_application/settings.py 文件中,我有几个 print 语句,因此:

print( 'running settings.py: ALLOWED_HOSTS: ' )
print( '\n'.join( ALLOWED_HOSTS ) )

...这个输出实际上在运行 nginx 和 Gunicorn 的远程服务器上的什么地方?

NB 我知道,据我所知,在任何地方打印ALLOWED_HOSTS 可能是一个严重的安全漏洞。这只是一个例子:我正处于学习/实验阶段。

在 AKX 回答后编辑
我发现无法将stdout 定向到journalctl,即使使用-R 开关也是如此。

...经过多次实验和挫折以及莫名其妙的502错误,我终于找到了一种方法:我的systemd配置文件现在看起来像这样:

[Unit]
Description=Gunicorn server for mysite.xyz

[Service]
Restart=on-failure
User=mike
WorkingDirectory=/home/mike/sites/mysite.xyz
EnvironmentFile=/home/mike/sites/mysite.xyz/.env

ExecStart=/home/mike/sites/mysite.xyz/virtualenv/bin/gunicorn \
    --bind unix:/tmp/mysite.xyz.socket \
    -R \
    --capture-output \
    --error-logfile /home/mike/gunicorn-error.log \
    superlists.wsgi:application

[Install]
WantedBy=multi-user.target

...确实,我发现包含-R 开关是不够的:您似乎还必须包含--capture-output 开关和--error-logfile 开关(注意我不清楚是否有如果您未设置该开关,则为错误输出的默认目标)。

使用上面的配置文件,settings.py 中的stdout 进入文件~/gunicorn-error.log。万岁。

【问题讨论】:

    标签: django nginx stdout gunicorn


    【解决方案1】:

    gunicorn 的标准输出指向哪里。

    例如,如果您在systemd 下运行,它们最终会进入系统日志,您可以使用journalctl 阅读。

    【讨论】:

    • 谢谢。是的,使用systemd。我刚刚跑了sudo journalctl -u gunicorn-mysite.xyz。自从我启动服务以来,只有一个条目:“Apr 17 18:49:59 vps46990199.local systemd[1]: Started Gunicorn server for mysite.xyz。” (网站名称已更改!)。
    • 我也试过sudo journalctl -S 2020-04-17...也不在那里。
    • 您可能需要启用此选项。 docs.gunicorn.org/en/stable/…
    • 再次感谢...在我的回答中查看我的编辑...如果您同意这一点,也许您想更新您的回答以帮助未来的观众:那么我可以接受您的回答。跨度>
    • /home/mike/sites/mysite.xyz/virtualenv/bin/gunicorn --bind unix:/tmp/mysite.xyz.socket superlists.wsgi:application 不起作用(根本没有任何重定向)吗?
    【解决方案2】:

    当您运行 gunicorn 时,有一个名为 --access-logfile 的特殊参数,它指定要写入的访问日志文件。如果您更喜欢标准输出,请将“-”设置为值参数。 例如:

    gunicorn  --access-logfile - demoapp.wsgi
    

    【讨论】:

    • print() 语句不是访问日志。
    • 谢谢...这不是我的想法,因为stdout 似乎没有在这里打印出来。不过,知道这一点很有用:似乎有些 Django 服务器文件输出会在这里打印,并带有关于 GET 请求的报告等。
    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2018-04-02
    • 2018-05-22
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多