所以设置是......
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
。
非常感谢!
答案 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>
期待此解决方案是否存在问题,或者某人有更好的解决方案......