Skip to content

Library is swallowing log messages from function code #38

Open

Description

@synic

I'm using logging messages in my python code, but none of those are ever visible. I'm currently configuring my logger like so:

formatter = json_log_formatter.JSONFormatter()
handler = logging.StreamHandler(sys.stdout)

if conf.USE_JSON_LOGGING:
    handler.setFormatter(formatter)

logging.basicConfig(
    level=logging.INFO,
    format='[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s',  # noqa
    handlers=[handler],
)
logger = logging.getLogger(__name__)

However, I never see the logs. Where are they going?

Activity

  1. Triangulum9r commented on Jul 21, 2021

    @Triangulum9r

    For whatever reason the lambda runtime interface client doesn't follow standard python logging. It definitely needs top e fixed. There is a logger in aws_lambda_powertools for bootstrapping the loggers and emits json logs as aws CloudWatch logs use structured logging. I assume this should work in cases where you are not using a lambda.

    I ended having to do this to get logging to work for imported modules:

    module being imported

    # mymodule.py
    import inspect
    import logging
    
    from aws_lambda_powertools import Logger
    
    if os.path.basename(sys.modules["__main__"].__file__) == "app.py":
        # use aws lambda logger, formatter
        logger = Logger(child=True)
    else:
        # use default logger
        logger = logging.getLogger(__name__)
        logger.addHandler(NullHandler())
    
    Foo:
        ...

    importing module

    # lambda.py
    from aws_lambda_powertools import Logger
    
    from mymodule import Foo
    
    def handler(event, context):
        Foo()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions