How do I forward logs created by a process inside a ECS Fargate task to Cloudwatch

0

I have the following in my ECS Fargate task definition that is starting up a container.

"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "my-log-group",
        "awslogs-region": "us-east-1",
        "awslogs-stream-prefix": "my-log-stream-prefix"
    }
}

I see the logs thrown by the entrypoint.sh script of the docker container. But I also want to send/view the logs from /home/my-app/application.log from inside the conatiner, which only get's created and populated after the container starts up.

질문됨 일 년 전1330회 조회
2개 답변
0
수락된 답변

If the log driver is awslogs, logs can be output to CloudWatch logs by setting the output destination to "/dev/stdout" or "/dev/stderr".
https://repost.aws/knowledge-center/ecs-container-logs-cloudwatch

The awslogs log driver simply passes the container logs that are the STDOUT and STDERR I/O streams from Docker to CloudWatch Logs. Therefore, verify that your application sends the logs to STDOUT and STDERR I/O streams. Be sure to set the correct log level for your application during the container build. Depending on your application, you might set the log level through an environment variable or a configuration file.

So, if you output "/home/my-app/application.log" to "/dev/stdout", you can check it in CloudWatch logs.

profile picture
전문가
답변함 일 년 전
0

Initially I assumed I would need to change all my logger statements in the processes that log. Found another solution online. Add the below line to send the logs to stdout in the Dockerfile.

RUN ln -sf /proc/1/fd/1 /home/my-app/application.log
답변함 일 년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠