AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件

问题描述 投票:0回答:2

在开发过程中,我一直在寻找一种简单的方法来查看 Beanstalk 上的调试语句。 我以为我可以简单地登录到 Beanstalk 上的文件。

在我的 application.properties 文件中设置

logging.file.path=/var/log

即使在我的本地机器上也没有产生任何结果。 我不确定这是权限问题还是什么,但在本地我设置了主目录的路径,然后我看到了文件 spring.log 出现。

使用 Beanstalk,我尝试了 /var/log、var/log/tomcat、/home/webapp/、./、~ 和各种其他值。 没有任何效果。

我什至尝试了这里建议的内容,但没有运气:https://medium.com/vividcode/logging-practice-for-elastic-beanstalk-java-apps-308ed7c4d63f

如果记录到文件不是一个好主意,有哪些替代方法? 我在谷歌上搜索了很多关于这个问题的信息,但所有答案都不是很清楚。

amazon-web-services spring-boot amazon-ec2 amazon-elastic-beanstalk
2个回答
4
投票

是的,这是权限问题。您的应用程序在

webapp
用户下运行,而
/var/log
由 root 用户拥有。因此你无法写入它。

添加日志文件以供 EB 识别的正确方法是通过配置文件。

具体来说,假设 Amazon Linux 2,您可以使用以下内容创建

.ebextensions/mylogfiles.config

files: 
  "/opt/elasticbeanstalk/config/private/logtasks/bundle/myapplogs.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
       /var/app/current/log/*.log

显然,

/var/app/current/log/*.log
将指向您的应用程序存储其日志文件的位置。
/var/app/current
是您应用程序的主文件夹。


0
投票

除了 Marcin 之外,我还必须完全按照记录的使用配置才能使其正常工作。

files: 
  "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/app/current/log/*.log
© www.soinside.com 2019 - 2024. All rights reserved.