应用程序记录弹性豆茎

Har*_*han 7 java logging amazon-web-services amazon-elastic-beanstalk

我在aws ec2上运行了Spring MVC应用程序.现在我决定转移到aws弹性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}"
Run Code Online (Sandbox Code Playgroud)

推荐链接:

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

我想知道AWS是否已经提供了我未能搜索的现成解决方案.

Hen*_*wan 2

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

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

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

  • 我将如何通过管道将 web-1.log 和 web-1.error.log 传输到 cloudwatch?我想知道为什么默认情况下这不是 EB 日志流配置的一部分。 (2认同)