您可以使用以下.ebextensions/awslog.config:
container_commands:
touch_logs:
command: touch /var/log/nodejs/nodejs.log /var/log/nginx/access.log /var/log/nginx/error.log /var/log/httpd/access_log /var/log/httpd/error_log
这可确保您永远不会看到任何这些文件的“没有找到具有给定路径的文件”。
注意:如果您使用的是节点以外的容器,则可以将 /var/log/nodejs.log 替换为 beanstalklogs.conf 中的任何内容...
awslogs 配置文件为/etc/awslogs/config/beanstalklogs.conf,默认(用于节点):
[/var/log/nodejs/nodejs.log]
log_group_name=/aws/elasticbeanstalk/YOUR_ENV/var/log/nodejs/nodejs.log
log_stream_name={instance_id}
file=/var/log/nodejs/nodejs.log*
[/var/log/nginx/error.log]
log_group_name=/aws/elasticbeanstalk/YOUR_ENV/var/log/nginx/error.log
log_stream_name={instance_id}
file=/var/log/nginx/error.log*
[/var/log/nginx/access.log]
log_group_name=/aws/elasticbeanstalk/YOUR_ENV/var/log/nginx/access.log
log_stream_name={instance_id}
file=/var/log/nginx/access.log*
[/var/log/httpd/error_log]
log_group_name=/aws/elasticbeanstalk/YOUR_ENV/var/log/httpd/error_log
log_stream_name={instance_id}
file=/var/log/httpd/error_log*
[/var/log/httpd/access_log]
log_group_name=/aws/elasticbeanstalk/YOUR_ENV/var/log/httpd/access_log
log_stream_name={instance_id}
file=/var/log/httpd/access_log*
[/var/log/eb-activity.log]
log_group_name=/aws/elasticbeanstalk/YOUR_ENV/var/log/eb-activity.log
log_stream_name={instance_id}
file=/var/log/eb-activity.log*
如您所见,这有 nginx 和 httpd 行。
可以:
1.删除这些httpd块。
2. 触摸这些文件。
触摸这些文件的侵入性似乎较小,并且会抑制错误消息,因此不会将任何内容发布到 cloudwatch 日志:
sudo touch /var/log/httpd/error_log /var/log/httpd/access_log
注意:当 EB 首次启动时,您会收到 httpd、nginx 和 nodejs.log 的错误!因此,在启动时触摸所有这些文件似乎更容易,这就是上面的 awslog.config 文件所做的。