[ AWS Lambda ] 에서 람다 함수에 대해서 알아보았다. 이번에는 Lambda의 로그를 확인하는 방법을 알아보자.
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
stream_handler = logging.StreamHandler()
logger.addHandler(stream_handler)
def main():
logger.debug("Debug[Level: 10]")
logger.info("Info[Level: 20]")
logger.warning("Warning[Level: 30]")
logger.error("Error[Level: 40]")
logger.critical("Critical[Level: 50]")
if __name__ == '__main__':
main()
Info[Level: 20]
Warning[Level: 30]
Error[Level: 40]
Critical[Level: 50]
Python에서 로그를 출력하는 간단한 예제를 가져왔다. 로그는 설정한 Level 이상의 로그만 출력된다. 위 코드에서는 INFO level 이상의 로그만 출력된다.
함수 | Level | 용도 |
---|---|---|
debug | 10 | 디버깅 내용 출력 |
info | 20 | 작업 내용 확인 |
warning | 30 | 경고 표시 |
error | 40 | 에러 출력 |
critical | 50 | 시스템의 심각한 문제 알림 |
AWS Lambda에서 출력한 내용은 CloudWatch에서 확인할 수 있다.
AWS Lambda 함수를 생성할 때 역할을 생성하도록 하면, CloudWatch 로그 그룹을 생성하고 해당 로그 그룹에 로그를 작성할 수 있는 권한이 생성된다.
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.debug("Debug: %s" %event)
logger.info("Info: %s" %event)
logger.warning("Warning: %s" %event)
logger.error("Error: %s" %event)
logger.critical("Critical: %s" %event)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
예제를 Test로 실행하고 CloudWatch에서 확인해 보자.
로그 스트림에서 함수 실행 전후로 START, END, REPORT 정보를 Request ID와 함께 출력해 주는 것을 확인할 수 있다. Logging 함수로 출력한 로그에도 Request ID가 Prefix로 들어가 있다.
Live tail은 CloudWatch의 로그를 실시간으로 확인할 수 있는 기능이다. 로그 그룹을 선택해 시작한 후, Lambda에서 테스트를 실행하면, 로그를 실시간으로 확인할 수 있을 것이다.
Log Insights에서는 쿼리를 통해서 원하는 로그를 검색할 수 있다. 위처럼 like 키워드를 이용해서 특정 단어가 포함된 로그를 검색할 수 있다.
특정 로그를 처음부터 끝까지 보고 싶다면 @requestId 필드를 조건으로 검색해 보자.
CloudWatch 로그 인사이트 쿼리 구문 에서 자세한 쿼리 문법을 확인할 수 있다.