在Docker上的Supervisor上通过Cron任务查看NodeJS应用程序日志

时间:2016-08-26 12:02:21

标签: node.js logging docker cron supervisor

所以设置是......

Docker>主管> Cron> NodeJS任务。

我正在让我的主管用当前的主管设置将其日志和错误日志输出到docker。

[program:cron]
command=cron -f
startsecs=10
priority=100
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

这表示正在运行的cron任务,即

app_1  |   'Supervisord is running as root and it is searching '
app_1  | 2016-08-26 12:54:30,519 CRIT Supervisor running as root (no user in config file)
app_1  | 2016-08-26 12:54:30,519 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
app_1  | 2016-08-26 12:54:30,536 INFO RPC interface 'supervisor' initialized
app_1  | 2016-08-26 12:54:30,536 CRIT Server 'unix_http_server' running without any HTTP authentication checking
app_1  | 2016-08-26 12:54:30,537 INFO supervisord started with pid 8
app_1  | 2016-08-26 12:54:31,542 INFO spawned: 'cron' with pid 11
app_1  | 2016-08-26 12:54:41,584 INFO success: cron entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)

但是它没有显示我的NodeJS应用程序中的任何内容。

如果我使用nodejs index.js从终端运行我的NodeJS应用程序,我会得到console.log输出。

我知道如何从主管运行它来获取我的NodeJS输出(它与上面的cron设置相同)但是因为我从cron触发它是不同的。

现在我怀疑我出错的地方是我将日志重定向到我的crontab ...?

我的crontab目前如下所示(运行简单ubuntu:14.04泊坞窗图片)...

* * * * * cd /home/app && nodejs /home/app/index.js >> /var/log/supervisor/supervisord.log 2>&1

这完全解雇了应用程序。

我也可以通过跳入容器并运行cat /var/log/supervisor/supervisord.log来查看日志。它显示了我的应用程序的输出以及我粘贴在上面的cron输出。但是它不会出现在docker-compose logs -f

非常感谢!

1 个答案:

答案 0 :(得分:1)

所以,这可能不是最好的方法,但它对我有用,所以嘿!

首先在我的LangService我生成了一个空白日志,因为......

Dockerfile

然后我修改了我的crontab文件,输出到这里......

RUN touch /var/log/cron.log

然后我在我的主管配置中添加了一个部分来拖尾日志......

* * * * * cd /home/app && nodejs /home/app/index.js >> /var/log/cron.logg 2>&1

运行一个款待,[program:cronlogs] command=tail -f /var/log/cron.log startsecs=20 priority=200 autostart=true autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr 的原因是它不存在文件不存在的错误,因为在cron尝试写入文件之前不存在任何日志文件。 / p>

期待此解决方案是否存在问题,或者某人有更好的解决方案......