与nginx和Gunicorn一起运行时Django stdout输出在哪里?

问题描述 投票:0回答:2

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

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

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

注意,我知道,就我所知,在任何地方打印ALLOWED_HOSTS可能都是严重的安全漏洞。这仅是示例:我处于学习/实验阶段。

AKX回答后编辑我尝试了他链接的-R选项,如下所示:/ etc / systemd / system / gunicorn-mysite.xyz.service

[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 \
    -R=True \
    --bind unix:/tmp/mysite.xyz.socket superlists.wsgi:application

[Install]
WantedBy=multi-user.target

我发现这会阻止Gunicorn启动。我还单独尝试了-R,没有=True,也没有-R True(只是一个空格),并且还尝试了另一种长替代开关--enable-stdio-inheritance的排列。什么也没做。

但是,我还可以使用其他开关:

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

...效果很好:Gunicorn已启动,现场直播。

在任何时候都不会在print日志中产生任何journalctl输出。我还在my_application / settings.py文件中引入了故意的语法错误,这也导致Gunicorn启动失败。因此,这将产生stderr输出。同样,journalctl日志中什么也没有显示。

与此同时,我还试图了解Gunicorn的“正常”日志的位置(即不是stdoutstderr)。

[当您是新手,并且难以理解为什么会遇到令人困惑的502或400错误时,查看错误日志和正常输出的能力非常重要。

除了stdoutstderr并在Gunicorn启动并运行后进行日志记录,如果发现Gunicorn systemd配置文件在某种程度上是“错误的”,是否会有任何输出...如下所示使用-R开关进行实验时发生了什么?

django nginx stdout gunicorn
2个回答
0
投票

无论是谁的烈性黑啤酒的标准输出指向。

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


0
投票

当您运行gunicorn时,会有一个名为--access-logfile的特殊参数,它指定要写入的访问日志文件。如果您更喜欢stdout,则将'-'设置为value参数。例如:

gunicorn  --access-logfile - demoapp.wsgi
© www.soinside.com 2019 - 2024. All rights reserved.