1

I am developing a REST service in python which is deployed as Lambda on AWS.Initially nothing was logged on Cloud Watch CLI so i introduced watchtower.

Below is my logging.in file.

[loggers]
keys=root

[handlers]
keys=screen, WatchtowerHandler

[formatters]
keys=logfileformatter

[logger_root]
level=DEBUG
handlers=screen

[logger_xyz]
level=DEBUG
handlers=screen, WatchtowerHandler
qualname=xyz

[formatter_logfileformatter]
format=%(asctime)s %(name)-12s: %(levelname)s %(message)s
class=logging.Formatter

[handler_logfile]
class=handlers.RotatingFileHandler
level=NOTSET
args=('log/xyz.log','a',100000,100)
formatter=logfileformatter

[handler_screen]
class=StreamHandler
args = (sys.stdout)
formatter=logfileformatter

[handler_WatchtowerHandler]
class=watchtower.CloudWatchLogHandler
formatter=formatter
send_interval=1
args= ()

the above works fine for logging config files.

LOG.info("dev config detected")

But not able to log the LOG.info() from any other code in the application. specifically REST calls, whereas logging is same everywhere.

Rene B.
  • 6,557
  • 7
  • 46
  • 72
Shubham
  • 997
  • 1
  • 9
  • 15

1 Answers1

1

You could either use Watchtower or Cloudwatch Handler

Watchtower: https://github.com/kislyuk/watchtower

import watchtower, logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.addHandler(watchtower.CloudWatchLogHandler())
logger.info("Hi")
logger.info(dict(foo="bar", details={}))

Cloudwatch Handler: https://pypi.org/project/cloudwatch/

import logging
from cloudwatch import cloudwatch

#Create the logger
logger = logging.getLogger('my_logger')
#Create the formatter
formatter = logging.Formatter('%(asctime)s : %(levelname)s - %(message)s')
# ---- Create the Cloudwatch Handler ----
handler = cloudwatch.CloudwatchHandler('AWS_KEY_ID','AWS_SECRET_KEY','AWS_REGION','AWS_LOG_GROUP','AWS_LOG_STREAM')
#Pass the formater to the handler
handler.setFormatter(formatter)
#Set the level
logger.setLevel(logging.WARNING)
#Add the handler to the logger
logger.addHandler(handler)

#USE IT!
logger.warning("Watch out! Something happened!")
Rene B.
  • 6,557
  • 7
  • 46
  • 72