在春季启动日志中,默认情况下转到stdout。这是一个很好的标准-更少的配置,没有目录配置等,但是我想构建一个docker镜像并在aws上运行它。
我如何从dockerized spring-boot stdout获取所有日志? cloudwatch支持吗?有没有简单的解决方案,还是我必须切换到记录文件,进行docker卷挂载等?
答案 0 :(得分:0)
这取决于您的体系结构外观以及您要如何处理日志。 如今,您可以使用多种工具来读取日志。您可以使用AWS Cloudwatch日志,并可以通过CloudWatch本身配置警报。 为了使用它,您可以配置slf4j后端。
<appender name="cloud-watch" class="io.github.dibog.AwsLogAppender">
<awsConfig>
<credentials>
<accessKeyId></accessKeyId>
<secretAccessKey></secretAccessKey>
</credentials>
<region></region>
<clientConfig class="com.amazonaws.ClientConfiguration">
<proxyHost></proxyHost>
<proxyPort></proxyPort>
</clientConfig>
</awsConfig>
<createLogGroup>false</createLogGroup>
<queueLength>100</queueLength>
<groupName>group-name</groupName>
<streamName>stream-name</streamName>
<dateFormat>yyyyMMdd_HHmm</dateFormat>
<layout>
<pattern>[%thread] %-5level %logger{35} - %msg %n</pattern>
</layout>
显然,这取决于您的体系结构:例如,如果您有filebeat,则可以将filebeat配置为使用cloudwatch。
如果对ec2实例使用经ecs优化的AMI(至少应为1.9.0),则还可以将aws日志驱动程序用于容器:
1.在启动ecs代理之前,必须使用以下命令更改/etc/ecs/ecs.config并调整ECS_AVAILABLE_LOGGING_DRIVERS:["json-file","awslogs"]
2.激活自动配置功能以创建用于ecs任务的日志组(您也可以手动创建组,但是我想您想在此处实现更多自动化)
有关aws logdriver的更多信息,您可以查看aws文档: