supervisor stdout log is too small 解决方法
问题:
在 docker 里面使用 supervisor 启动 nginx 这一方法中,在 nginx 的error.log 日志里面会看到一些关于 supervisor 的信息。supervisor.log is too small
截图如下所示:
2021/12/30 11:54:18 [crit] 16#0:cache file"/tmp/nglnx-stdout---supervisor.log" is too small
2021/12/30 11:54:18 [crit] 16#0:cache file"/tmp/nginx-vts-exporter-stdout---supervisor.log" is too small
现象:
- 在容器启动后,这个日志并不是马上出现的,而是等一会才出现。
- 启动容器后,进入容器的
/tmp
目录中,发现这些文件是存在。过一会就看不到了。
解决方法:
在配置 supervisor 启动 nginx 的时候,要把 log 移动到别目录,不能放在/tmp
中,比如/var/log
中。比如这样配置:
[program:nginx]
command=nginx -g 'daemon off;'
directory=/usr/local/nginx/sbin ;进程运行目录
startsecs=5 ;启动5秒后没有异常退出表示进程正常启动,默认为1秒
autostart=true ;在supervisord启动的时候也自动启动
autorestart=true ;程序退出后自动重启
redirect_stderr=true ;如果是true,则进程的stderr输出被发送回其stdout文件描述符上
stdout_logfile_maxbytes=100MB ;指定日志文件最大容量
stdout_logfile_backups=10 ;指定日志文件备份数
stdout_logfile=/var/log/supervisor/nginx-stdout-supervisor.log ;将进程stdout输出到指定文件
stdout_capture_maxbytes=1MB ;写入capture FIFO的最大字节数限制
这样启动supervisor 就不会报log too small 的错误。