对于给定的进程,`supervisorctl tail`如何工作?

时间:2012-07-09 09:06:35

标签: python logging supervisord

supervisorctl tail从哪里获取某个进程的日志信息?我如何获得完整的日志?

1 个答案:

答案 0 :(得分:16)

从命令行帮助(supervisorctl help tail):

tail [-f] <name> [stdout|stderr] (default stdout)
Ex:
tail -f <name>          Continuous tail of named process stdout
                        Ctrl-C to exit.
tail -100 <name>        last 100 *bytes* of process stdout
tail <name> stderr      last 1600 *bytes* of process stderr

因此,默认情况下,tail命令会使进程stdout失效。如果您需要获取完整日志,stdout_logfile option of the [program:x] section将确定存储的位置;还有一个stderr_logfile选项。

如果未设置该选项或将其设置为AUTO,则会在进程启动时创建日志文件,但每当supervisord重新启动时都会清除。此文件是在the [supervisord] childlogdir option设置的目录中创建的(默认情况下是您平台的TMP directory),并且生成的文件名为<program-name>-<stdout|stderr>---<supervisor-identifier>-<6-random-characters>.log,例如varnish-stdout---supervisor-AqY52e.log

因此,如果要访问整个stdout日志,则至少需要将childlogdir选项设置为固定目录,以免您必须搜索正确的临时目录。