aws-cloudformation/cloudformation-cli-python-plugin

Setting Log Handler Formatter

thoward-godaddy opened this issue · 0 comments

I'd like to have logs formatted using ecs_logging and noticed adding a handler to my app does nothing to change the log format in the CloudWatch LogGroup.

This for example has no impact to log format:

LOGGER = logging.getLogger(__package__)
LOGGER.setLevel(level=logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(ecs_logging.StdlibFormatter())
LOGGER.addHandler(handler)

I also tried brute forcing the formatter with no luck:

def set_formatter():
    for logger in logging.root.manager.loggerDict.values():
        if isinstance(logger, logging.PlaceHolder):
            continue

        if logger.hasHandlers():
            for handler in logger.handlers:
                handler.setFormatter(ecs_logging.StdlibFormatter())

@hook.handler(HookInvocationPoint.CREATE_PRE_PROVISION)
def pre_create_handler(
    session: Optional[SessionProxy],
    request: BaseHookHandlerRequest,
    callback_context: MutableMapping[str, Any],
    type_configuration: TypeConfigurationModel,
) -> ProgressEvent:
    set_formatter()
    LOGGER.info(jsonify_hook_context(request=request))
    return ProgressEvent(status=OperationStatus.SUCCESS)

Is there a way to set the format for log output using this library?