当使用nginx和Gunicorn运行时,Django stdout输出会去哪里



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

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

在运行nginx和Gunicorn的远程服务器上,这些输出实际在哪里?

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

AKX回答后编辑
即使使用-R开关,我也找不到将stdout定向到journalctl的方法。

经过多次实验、挫折和令人困惑的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。Hurrah。

gunicorn的stdout指向的任何位置。

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

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

gunicorn  --access-logfile - demoapp.wsgi

最新更新