supervisor没有捕获到golang日志输出

新手上路,请多包涵

supervisor配置

[supervisord]
http_port=/var/tmp/supervisor.sock
pidfile=/var/run/supervisord.pid
logfile=/var/log/supervisor/supervisord.log;

[program:golang-server]
directory=/data/wwwroot/
command=/data/wwwroot/golang-server
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/golang-server.log
stderr_logfile=/var/log/supervisor/golang-server.log

日志文件里面没有任何东西。supervisord日志文件也没有;

服务运行状态正常。supervisor进程正常

阅读 9.7k
5 个回答

你是不是在你的代码里面,通过 logs 把日志给发往其它地方了.如果 logs 默认什么都不配置,就会输出到 stdout 和 stderr 如果你自己做了配置,比如发往 syslog ,日志服务器,kafka,以及文件什么的,那这边可能就没有输出了.

权限问题呢?线上遇到过好几次日志因为权限问题没法写入

如果你想标准输出和错误输出在一个文件,应该去掉stderr_logfile,新增redirect_stderr=true

supervisord 捕获的是stdout和stderr 的io流。你的服务里面如果使用了fmt.Print 等,才会被supervisord 写入到指定的目录里面。

赞同幽灵的观点,不设置的话程序输出默认在stdout和stderr,但是如果你在程序代码把日志定向到其他地方,这里肯定不能获取日志的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题