DJe*_*son 13 python python-3.x amazon-cloudwatch aws-lambda
使用Python 3.7运行时抛出的未处理异常似乎没有像在Python 3.6中那样记录到CloudWatch.如何在Python 3.7中设置记录器来捕获此信息?
1.像这样创建一个lambda函数:
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def lambda_handler(event, context):
logger.info("This shows fine")
raise Exception("I failed")
Run Code Online (Sandbox Code Playgroud)
2.使用Python 3.6运行时运行此函数
START RequestId: a2b6038b-0e5f-11e9-9226-9dfc35a22dcc Version: $LATEST
[INFO] 2019-01-02T07:25:52.797Z a2b6038b-0e5f-11e9-9226-9dfc35a22dcc //This shows fine
I failed: Exception
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 9, in lambda_handler
raise Exception("I failed")
Exception: I failed
END RequestId: a2b6038b-0e5f-11e9-9226-9dfc35a22dcc
REPORT RequestId: a2b6038b-0e5f-11e9-9226-9dfc35a22dcc Duration: 1.12 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 21 MB
Run Code Online (Sandbox Code Playgroud)
2.切换到Python 3.7运行时并再次运行...没有堆栈跟踪
START RequestId: 3840aa8e-0e5d-11e9-bece-45a2022a53c6 Version: $LATEST
[INFO] 2019-01-02T07:08:35.170Z 3840aa8e-0e5d-11e9-bece-45a2022a53c6 This shows fine
END RequestId: 3840aa8e-0e5d-11e9-bece-45a2022a53c6
REPORT RequestId: 3840aa8e-0e5d-11e9-bece-45a2022a53c6 Duration: 2.20 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 20 MB
Run Code Online (Sandbox Code Playgroud)
是的,我已经注意到了。为了克服我使用装饰器。
def log_errors(func: Callable[[dict, dict], None]):
def wrapper(*args, **kwargs):
try:
func(*args, **kwargs)
except Exception as err:
warning(traceback.format_exc())
raise err
return wrapper
Run Code Online (Sandbox Code Playgroud)
用法:
@log_errors
def handler(event, context):
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |