16

I'm developing python application which works on aws beanstalk environment. For error handling and debugging proposes I write logs to custom lof file on the directory /var/logs/.

What should I do in order to have ability snapshot logs from Elastic beanstalk management console?

vvvvv
  • 25,404
  • 19
  • 49
  • 81
Vadym Fedorov
  • 2,395
  • 2
  • 21
  • 31

2 Answers2

24

Expanding on Vadim911 (and my own comment), I solved the problem using a config file in .ebextensions. Here is the python code:

import logging
logging.basicConfig(filename='/opt/python/log/my.log', level=logging.DEBUG)

Here is the .ebextensions config file code:

files:
  "/opt/python/log/my.log" :
   mode: "000666"
   owner: ec2-user
   group: ec2-user
   content: |
       # Askbot log file

The contents of this file (along with other log files) is available using the Logs snapshot function on the AWS elastic beanstalk console.

Chuck
  • 1,089
  • 1
  • 13
  • 18
  • True, but there is no need to create the file in `.ebextensions`, as `logging` will do that for you when the file-handler is first initialized. If you run into a `PermissionError`, try removing the log file at the end of `container_commands` as explained [here](https://stackoverflow.com/a/60549321). – djvg Mar 06 '20 at 07:59
7

If you need have ability to snapshot log files from Beanstalk management console, you should just write you log files to "/opt/python/log/" folder. Elastic beanstalk scripts use this folder for log tailing.

Vadym Fedorov
  • 2,395
  • 2
  • 21
  • 31