为啥无法在 aws elasticbeanstalk 上登录我的 springboot 应用程序?

Posted

技术标签:

【中文标题】为啥无法在 aws elasticbeanstalk 上登录我的 springboot 应用程序?【英文标题】:Why doesn't work logging in my springboot app on aws elasticbeanstalk?为什么无法在 aws elasticbeanstalk 上登录我的 springboot 应用程序? 【发布时间】:2021-02-18 09:24:23 【问题描述】:

我部署在 aws elasticbeanstalk 上的 war 应用程序不写入任何日志。 我有同样的问题,如Logs not working on Elastic Beanstalk Tomcat environment。为了测试和简化,我部署了一个新的空战争项目,该项目由 maven 在 OpenJDK Java11 上构建的 Spring 框架 Initializr (https://start.spring.io/) 生成到 Tomcat 8.5,Corretto 11 在 64 位 Amazon Linux 2/4.1.1 上运行。

我使用 slf4j 记录器。 还有一些信息级别的日志记录。在本地主机上工作正常。

在 aws elb 上是 /var/log/tomcat/catalina.2020-11-05.log 日志文件,启动后我只能看到这些日志:

05-Nov-2020 10:48:37.902 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/8.5.56
05-Nov-2020 10:48:37.906 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 23 2020 17:39:13 UTC
05-Nov-2020 10:48:37.907 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.56.0
05-Nov-2020 10:48:37.907 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
05-Nov-2020 10:48:37.908 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.14.192-147.314.amzn2.x86_64
05-Nov-2020 10:48:37.908 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
05-Nov-2020 10:48:37.911 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-11-amazon-corretto.x86_64
05-Nov-2020 10:48:37.913 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.8+10-LTS
05-Nov-2020 10:48:37.914 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Amazon.com Inc.
05-Nov-2020 10:48:37.914 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/share/tomcat
05-Nov-2020 10:48:37.914 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/share/tomcat
05-Nov-2020 10:48:37.914 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
05-Nov-2020 10:48:38.025 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
05-Nov-2020 10:48:38.078 INFO [main] org.apache.tomcat.util.net.NioselectorPool.getSharedSelector Using a shared selector for servlet write/read
05-Nov-2020 10:48:38.118 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1766 ms
05-Nov-2020 10:48:38.261 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
05-Nov-2020 10:48:38.263 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.56
05-Nov-2020 10:48:38.289 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/var/lib/tomcat/webapps/ROOT]
05-Nov-2020 10:48:38.738 WARNING [localhost-startStop-1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [4.0]. Default version will be used.
05-Nov-2020 10:48:41.253 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
05-Nov-2020 10:48:41.544 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/var/lib/tomcat/webapps/ROOT] has finished in [3,252] ms
05-Nov-2020 10:48:41.552 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
05-Nov-2020 10:48:41.586 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 3467 ms

我的应用程序中缺少我的信息日志或任何其他 springboot 日志。 在 java 1.8 上的早期版本的 ELB 中,它工作正常。发生了什么变化? 如何重新开启日志记录?

【问题讨论】:

【参考方案1】:

这是我们的 java spring 应用程序中的问题。错误的开发配置。 在 application.properties 中有这一行

logging.file.name=log/synchronization.log

乍一看,我并没有注意到这一点。在 application-production.properties 中没有关于日志记录的任何内容,因此此配置影响了生产,并且所有日志都写入了此文件(错误的路径,因为在 aws eb(tomcat) 上是用于记录日志/而不是日志/的目录)。这就是为什么我在标准日志路径 less /var/log/tomcat/ 上看不到日志的原因

我将 application-production.properties 更改为

logging.file.name=logs/my-app.log

就是这样。现在可以了。

【讨论】:

以上是关于为啥无法在 aws elasticbeanstalk 上登录我的 springboot 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

为啥无法在 aws elasticbeanstalk 上登录我的 springboot 应用程序?

为啥 AWS amplify 无法识别更新的节点版本?

为啥我的 AWS 实例无法安装 node-sass 包?

在 AWS Elastic Beanstalk 上运行 Laravel 的迁移命令

Rails Deploy 使用 Elastic Beanstalk - 无法将数组转换为字符串

为啥我无法在对等互连后从另一个 VPC 中的 EC2 实例连接 AWS RDS 实例