【问题标题】:Partial logging in AWS Lambda using Python使用 Python 在 AWS Lambda 中进行部分日志记录
【发布时间】:2021-02-17 07:35:22
【问题描述】:

我有以下代码,一个使用打印和日志记录的基本 lambda。

import json
import logging

def lambda_handler(event, context):
    print("Received event: " + json.dumps(event, indent=2))
    print("value1 = " + event['key1'])
    print("value2 = " + event['key2'])
    print("value3 = " + event['key3'])
    print("Will it log?")
    
    logger = logging.getLogger()
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')
    
    return event['key1']  # Echo back the first key value

我试图让它正确记录到 cloudwatch,但它只在传入测试值时输出,其他打印或日志语句均不输出。如果这是一个权限问题,我假设这不会在日志中打印任何内容?糊涂了!

输出:

START RequestId: a9aac29d-3e05-4bb0-baad-1e069fe60801 Version: $LATEST
value1 = Hello, Dave
value2 = value2
value3 = value3
END RequestId: a9aac29d-3e05-4bb0-baad-1e069fe60801
REPORT RequestId: a9aac29d-3e05-4bb0-baad-1e069fe60801  Duration: 1.37 ms   Billed Duration: 2 ms   Memory Size: 128 MB Max Memory Used: 49 MB  

测试事件:

{
  "key1": "Hello, Dave",
  "key2": "value2",
  "key3": "value3"
}

【问题讨论】:

  • 您是 100% 生成该输出的代码吗?也许您没有部署最后的更改?尝试更改打印“print("valueX ...”并验证输出更改
  • 你用这个一针见血。由于某种原因,它没有部署。我推动了另一个部署,然后重新测试,日志按预期出现。感谢大家的帮助。

标签: python amazon-web-services logging aws-lambda


【解决方案1】:
import json
import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

def lambda_handler(event, context):
    print("Received event: " + json.dumps(event, indent=2))
    print("value1 = " + event['key1'])
    print("value2 = " + event['key2'])
    print("value3 = " + event['key3'])
    print("Will it log?")
    
    logger = logging.getLogger()
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')
    
    return event['key1']  # Echo back the first key value

测试输入事件如下;

通过以上代码和测试输入事件,AWS CloudWatch 中的日志如下;

【讨论】:

  • 感谢您的验证。很高兴它现在可以工作了:)
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 2015-02-17
  • 2018-10-03
  • 2019-05-28
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2015-12-14
相关资源
最近更新 更多