amazon-web-services - Spring Boot Tomcat 访问 Cloudwatch Docker 日志
问题描述
我想将 spring boot 访问日志发送到另一个日志组中的 Cloud watch,我正在使用 docker。应用程序日志默认写入 STD OUT,目前正在使用 awsdriver 进行云监控。默认情况下,访问日志会写入 docker 容器内的文件。如何将文件发送到云手表?
解决方案
使用 AWS 日志驱动程序,它只会发送您发送到stdout 或 stderrentrypoint
的日志,除非您更改或,否则您无法从文件发送日志CMD
。
将文件日志发送到 std 的一种方法是
CMD nohup java -jar /opt/spring-cloud/lib/config-client.jar >/dev/null 2>&1 & sleep 10 && tail -f /var/log/access.log
但是,如果你的 spring 应用程序像主进程一样死掉,容器仍然会运行,这一点非常重要tail -f /var/log/access.log
,
我建议将所有日志写入标准输出和标准错误。
另一种选择是将log
文件挂载到主机,然后使用 cloud agent start 从使用cloud watch log agent的挂载文件推送日志。