配置Spring Boot日志至AWS CloudWatch及日志文件路径问题
CloudWatch收集Spring Boot日志的正确路径配置
EC2实例无法启动的核心原因是你配置的日志路径在EC2实例上不存在,或者CloudWatch Agent没有权限访问该路径,导致Agent启动失败进而影响实例启动。按以下步骤修正:
先确认Spring Boot在EC2上的实际日志输出路径
- 如果你的Spring Boot应用没有自定义日志配置,默认只会输出到控制台(stdout),此时可以配置CloudWatch收集控制台日志,或者修改Spring Boot的
application.properties/application.yml添加日志文件输出配置,比如:# application.properties logging.file.name=/home/ec2-user/logs/test.log - 如果已经自定义了日志路径,直接使用EC2实例上的绝对路径即可,确保该路径和你本地开发环境的路径无关,是EC2内部的真实路径。
- 如果你的Spring Boot应用没有自定义日志配置,默认只会输出到控制台(stdout),此时可以配置CloudWatch收集控制台日志,或者修改Spring Boot的
确保EC2上的日志路径存在且权限正确
登录EC2实例,手动创建日志目录并设置权限:sudo mkdir -p /home/ec2-user/logs sudo chmod 755 /home/ec2-user/logsCloudWatch Agent默认以root用户运行,确保该用户能读写该目录下的文件。
修正CloudWatch Agent配置
检查配置中的multi_line_start_pattern,部分Agent版本不支持直接引用{timestamp_format}变量,建议直接写正则表达式匹配日志开头的时间戳,修正后的配置示例:{ "logs": { "logs_collected": { "files": { "collect_list": [{ "file_path": "/home/ec2-user/logs/test.log", "log_group_name": "java-aws-rnd-logging", "log_stream_name": "{instance_id}.log", "timestamp_format": "%Y-%m-%d %H:%M:%S.%f", "multi_line_start_pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d+" }] } } } }
配置完成后重启CloudWatch Agent,或者重新启动EC2实例即可正常收集日志。
内容的提问来源于stack exchange,提问作者Khyati Chhajed
相关产品推荐
相关产品推荐

