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

oku*_*sov 9 python logging supervisord

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

Mar*_*ers 18

从命令行help(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[program:x]部分选项将确定存储的位置; 还有一个stderr_logfile选项.

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

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