【问题标题】:Application Logging for elastic beanstalk弹性豆茎的应用程序日志记录
【发布时间】:2016-12-15 08:42:30
【问题描述】:

我在 aws ec2 上运行了 Spring MVC 应用程序。现在我决定迁移到 aws elastic beanstalk 并在迁移当前应用程序之前对其进行探索。关于持久性存储和应用程序日志,我几乎没有什么问题。

我的问题可能很幼稚,但请多多包涵:)

我正在使用 log4j 进行应用程序日志记录。 Log4j 将日志附加到硬盘驱动器的指定位置。由于弹性 beanstalk 没有持久存储(一旦实例终止,存储将被删除)并且实例可能会根据加载规则增长/缩小。

所以我被困在下面

  1. 如何配置 log4j 以附加日志。
  2. 如果我坚持当前的 log4j 实现,我将如何确保在启动实例时创建目录结构(我假设应用程序中没有代码更改)
  3. 如果我使用 log4j 中的 socketappender,那么我将如何区分来自不同实例的文件。

我一直在阅读描述使用 .ebextensions 目录的文章。我尝试使用 AWS 提供的基本 .conf 文件将日志跟踪到 S3,但我的应用程序日志没有成功。

.ebextensions

下创建应用程序目录位置的示例脚本
commands:
  01_create_dir:
    test: test ! -d "${DIR}"
    command: mkdir "${DIR}"

参考链接:

EBS 控制台显示用于 URL 访问的 apache 日志。

我想知道是否有 AWS 提供的现成解决方案我没有搜索到。

【问题讨论】:

  • 我建议您做另一件事,忘记文件日志并使用 Cloudwatch 附加程序。因此,您可以将所有日志汇总到更易于使用的 Cloudwatch 日志中。例如,您可以使用它:github.com/Virtual-Instruments/cloudwatch-log4j-appender
  • 嗨@Harshawardhan,您是否为您的问题获得了生产级解决方案?我也有类似的情况。

标签: java amazon-web-services logging amazon-elastic-beanstalk


【解决方案1】:

来自http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-platform.html

来自以 a 开头的进程的标准输出和错误流 Procfile 在以进程命名的日志文件中捕获并存储 在 /var/log 中。例如上例中的 web 进程 为 stdout 和生成名为 web-1.log 和 web-1.error.log 的日志 分别为标准错误。

基于此,您所要做的就是确保 log4j / logback 输出您想要标准输出的日志,即CONSOLE。对于 Spring Boot,这是默认行为。

【讨论】:

  • 如何将 web-1.log 和 web-1.error.log 传送到 cloudwatch?我想知道为什么默认情况下这不是 EB 日志流配置的一部分。
  • 有什么办法可以看到那些登录cloudwatch的吗?
猜你喜欢
  • 1970-01-01
  • 2021-03-13
  • 2013-07-06
  • 2023-04-04
  • 2015-03-20
  • 2015-07-12
  • 2016-02-18
  • 2016-01-04
  • 2016-01-13
相关资源
最近更新 更多