在 Supervisor 的帮助下,我使用Laravel Horizon来处理我的 Laravel 应用程序中的作业。整个设置在 ECS 中的 docker 上运行。在 ECS 的主机节点(由 Fargate 管理)上,我运行了 datadog 代理,它将获取容器的 stdout/stderr 并将其放入 datadog 中(这样我就可以集中访问日志)。
我注意到的是,我没有从正在处理的作业中获取任何日志。即使是简单print("test");
的工作代码也不会进入标准输出。
这是我的设置:
Dockerfile
FROM alpine:3.11
RUN apk add \
--no-cache \
--update \
...snipped...
py-pip \
&& pip install supervisor \
&& pip install supervisor-stdout
WORKDIR /app
...snipped...
yaml 中这个的服务定义如下所示:
version: '2'
services:
my-app-horizon:
container_name: my-app-horizon
image: ${DOCKER_IMAGE}
mem_limit: 1024M
command: "supervisord -c /etc/supervisor/conf.d/horizon.conf"
...snipped...
这是我的内容horizon.conf
:
[supervisord]
nodaemon=true
[program:horizon]
priority = 100
process_name=%(program_name)s
command=php /app/artisan horizon
autostart=true
autorestart=true
user=apache
stopwaitsecs=3600
stdout_events_enabled=true
stderr_events_enabled=true
[eventlistener:stdout]
priority = 1
command = supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler
知道我可能会错过什么吗?我无法通过主管从 docker 中的 Horizon 处理的作业中获取日志?