使用AWS Elastic Beanstalk记录java应用程序
我已经用Tomcat 8.5和Java 8在AWS Elastic Beanstalk环境中部署了WAR。应用程序加载后运行良好。但是,当我去查看日志(Environment->;logs->;Last 100 lines或Full logs)时,我看不到应用程序编写的日志。还有其他一些日志,比如tomcat/activity/boot等,但不是我的应用程序编写的日志。在本地运行时,日志会按预期工作,而不是在AWS上
下面是我的日志。xml文件:
<configuration debug="true">
<appender name="APPLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/my_app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>/var/log/my_app_%d{yyyy-MM-dd}_%i.log</FileNamePattern>
<maxHistory>7</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %-5level %c{1} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="LOGFILE" />
</root>
</configuration>
在其中一篇文章中,我了解到我们需要配置EB环境,以便将应用程序的日志包含在日志包中。因此,我将以下配置文件放在应用程序的资源目录中:
files:
"/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/log/*.log
"/opt/elasticbeanstalk/tasks/taillogs.d/applogs.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/log/*.log
但这没有帮助,应用程序的日志行为没有改变。 到目前为止,这是一场令人沮丧的考验,希望能得到一些帮助
# 1 楼答案
当我将应用程序部署到AWS时,我在日志记录方面也遇到了类似的问题
有几件事值得注意:
(1)配置文件是正确的(这就是我使用的),但需要进入webapp目录中的
.ebextensions
文件夹:(2)您需要更改日志文件的位置。你的应用程序无法写入var/log文件夹,但由于文件夹权限问题,可以写入var/log/tomcat文件夹
你可以在这里找到关于我问题的更多细节:AWS Elastic Beanstalk Application Logging with Logback
希望你能成功