Конфигурация сторожевой башни для ведения журнала Python в CloudWatch

Я разрабатываю службу REST на Python, которая развернута как Lambda на AWS. Первоначально в CLI Cloud Watch ничего не было зарегистрировано, поэтому я представил сторожевую башню.

Ниже мой файл logging.in.

[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= ()

вышеупомянутое отлично работает для регистрации файлов конфигурации.

LOG.info("dev config detected")

Но не может регистрировать LOG.info() из любого другого кода в приложении. в частности, вызовы REST, тогда как ведение журнала везде одинаково.

0 ответов

Вы можете использовать Watchtower или Cloudwatch Handler

Сторожевая башня: 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: 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!")
Другие вопросы по тегам