로그 수준 필터링
Lambda는 특정 세부 수준 이하의 로그만 CloudWatch Logs로 전송되도록 함수의 로그를 필터링할 수 있습니다. 함수의 시스템 로그(Lambda가 생성하는 로그)와 애플리케이션 로그(함수 코드가 생성하는 로그)에 대해 개별적으로 로그 수준 필터링을 구성할 수 있습니다.
지원되는 런타임 및 로깅 메서드의 경우 함수의 애플리케이션 로그를 필터링하기 위해 Lambda의 함수 코드를 변경할 필요가 없습니다.
다른 모든 런타임 및 로깅 메서드의 경우 함수 코드는 키 "level"
과 키 값 쌍을 포함하는 JSON 형식의 객체로 로그 이벤트를 stdout
또는 stderr
에 출력해야 합니다. 예를 들어 Lambda는 다음 stdout
으로의 출력을 DEBUG 수준 로그로 해석합니다.
print('{"level": "debug", "msg": "my debug log", "timestamp": "2024-11-02T16:51:31.587199Z"}')
"level"
값 필드가 유효하지 않거나 누락된 경우 Lambda는 로그 출력에 수준 INFO를 할당합니다. Lambda가 타임스탬프 필드를 사용하려면 유효한 RFC 3339
타임스탬프 키의 이름을 지정할 때는 사용 중인 런타임의 규칙을 따르십시오. Lambda는 관리형 런타임에서 사용되는 대부분의 일반적인 명명 규칙을 지원합니다.
참고
로그 수준 필터링을 사용하려면 함수가 JSON 로그 형식을 사용하도록 구성해야 합니다. 현재 모든 Lambda 관리형 런타임의 기본 로그 형식은 일반 텍스트입니다. 함수의 로그 형식을 JSON으로 구성하는 방법을 알아보려면 함수의 로그 형식 설정을 참조하세요.
애플리케이션 로그(함수 코드로 생성된 로그)의 경우 다음 로그 수준 중에서 선택할 수 있습니다.
로그 수준 | 표준 사용량 |
---|---|
TRACE(최대 세부 정보) | 코드 실행 경로를 추적하는 데 사용되는 가장 세밀한 정보 |
DEBUG | 시스템 디버깅에 대한 세부 정보 |
INFO | 함수의 정상 작동을 기록하는 메시지 |
WARN | 해결되지 않을 경우 예상치 못한 동작으로 이어질 수 있는 잠재적 오류에 대한 메시지 |
ERROR | 코드가 예상대로 작동하지 못하게 하는 문제에 대한 메시지 |
FATAL(최소 세부 정보) | 응용 프로그램 작동을 중지시키는 심각한 오류에 대한 메시지 |
로그 수준을 선택하면 Lambda는 해당 수준 이하의 로그를 CloudWatch Logs로 보냅니다. 예를 들어 함수의 애플리케이션 로그 수준을 WARN으로 설정하면 Lambda는 INFO 및 DEBUG 수준에서 로그 출력을 전송하지 않습니다. 로그 필터링의 기본 애플리케이션 로그 수준은 INFO입니다.
Lambda가 함수의 애플리케이션 로그를 필터링할 때 레벨이 없는 로그 메시지에는 로그 수준 INFO가 할당됩니다.
시스템 로그(Lambda 서비스에서 생성된 로그)의 경우 다음 로그 수준 중에서 선택할 수 있습니다.
로그 수준 | 사용법 |
---|---|
DEBUG(최대 세부 정보) | 시스템 디버깅에 대한 세부 정보 |
INFO | 함수의 정상 작동을 기록하는 메시지 |
WARN(최소 세부 정보) | 해결되지 않을 경우 예상치 못한 동작으로 이어질 수 있는 잠재적 오류에 대한 메시지 |
로그 수준을 선택하면 Lambda는 해당 수준 이하의 로그를 전송합니다. 예를 들어 함수의 시스템 로그 수준을 INFO로 설정하면 Lambda는 DEBUG 수준에서 로그 출력을 전송하지 않습니다.
기본적으로 Lambda는 시스템 로그 레벨을 INFO로 설정합니다. 이 설정을 사용하면 Lambda는 자동으로 "start"
및 "report"
로그 메시지를 CloudWatch에 전송합니다. 더 많거나 덜 상세한 시스템 로그를 수신하려면 로그 수준을 DEBUG 또는 WARN으로 변경합니다. Lambda가 다양한 시스템 로그 이벤트를 매핑하는 로그 수준 목록을 보려면 시스템 로그 수준 이벤트 매핑을 참조하세요.
로그 수준 필터링 구성
함수에 대한 애플리케이션 및 시스템 로그 수준 필터링을 구성하려면 AWS Command Line Interface(AWS CLI)에서 Lambda 콘솔을 사용할 수 있습니다. CreateFunction 및 UpdateFunctionConfiguration Lambda API 명령, AWS Serverless Application Model(AWS SAM) AWS::Serverless::Function 리소스, AWS CloudFormation AWS::Lambda::Function 리소스를 사용하여 함수의 로그 수준을 구성할 수도 있습니다.
코드에서 함수의 로그 수준을 설정하는 경우 이 설정은 구성된 다른 로그 수준 설정보다 우선합니다. 예를 들어 Python logging
setLevel()
메서드를 사용하여 함수의 로깅 수준을 정보로 설정하는 경우 이 설정은 Lambda 콘솔을 사용하여 구성한 경고 설정보다 우선합니다.
기존 함수의 애플리케이션 또는 시스템 로그 수준 구성하기(콘솔)
Lambda 콘솔의 함수 페이지
를 엽니다. -
함수를 선택합니다.
-
함수 구성 페이지에서 모니터링 및 작업 도구를 선택합니다.
-
로깅 구성 창에서 편집을 선택합니다.
-
로그 콘텐츠에서 로그 형식에 대해 JSON이 선택되어 있는지 확인합니다.
-
라디오 버튼을 사용하여 함수에 대해 원하는 애플리케이션 로그 수준 및 시스템 로그 수준을 선택합니다.
-
저장을 선택합니다.
기존 함수의 애플리케이션 또는 시스템 로그 수준 구성하기(AWS CLI)
-
기존 함수의 애플리케이션 또는 시스템 로그 수준을 변경하려면 update-function-configuration
명령을 사용합니다. --logging-config
를 사용하여SystemLogLevel
을DEBUG
,INFO
또는WARN
중 하나로 설정합니다.ApplicationLogLevel
을DEBUG
,INFO
WARN
,ERROR
또는FATAL
중 하나로 설정합니다.aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
함수를 생성할 때 로그 수준 필터링 구성하기
-
새 함수를 생성할 때 로그 수준 필터링을 구성하려면
--logging-config
를 사용하여 create-function명령에서 SystemLogLevel
및ApplicationLogLevel
키를 설정합니다.SystemLogLevel
을DEBUG
,INFO
또는WARN
중 하나로 설정합니다.ApplicationLogLevel
을DEBUG
,INFO
WARN
,ERROR
또는FATAL
중 하나로 설정합니다.aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
시스템 로그 수준 이벤트 매핑
Lambda에서 생성된 시스템 수준 로그 이벤트의 경우 다음 표는 각 이벤트에 할당된 로그 수준을 정의합니다. 표에 나열된 이벤트에 대한 자세한 내용은 Lambda 텔레메트리 API Event 스키마 참조를 참조하세요.
이벤트 이름 | Condition | 지정된 로그 수준 |
---|---|---|
initStart | runtimeVersion is set | INFO |
initStart | runtimeVersion is not set | DEBUG |
initRuntimeDone | status=success | DEBUG |
initRuntimeDone | status!=success | WARN |
initReport | initializationType!=on-demand | INFO |
initReport | initializationType=on-demand | DEBUG |
initReport | status!=success | WARN |
restoreStart | runtimeVersion is set | INFO |
restoreStart | runtimeVersion is not set | DEBUG |
restoreRuntimeDone | status=success | DEBUG |
restoreRuntimeDone | status!=success | WARN |
restoreReport | status=success | INFO |
restoreReport | status!=success | WARN |
시작 | - | INFO |
runtimeDone | status=success | DEBUG |
runtimeDone | status!=success | WARN |
report | status=success | INFO |
report | status!=success | WARN |
extension | state=success | INFO |
extension | state!=success | WARN |
logSubscription | - | INFO |
telemetrySubscription | - | INFO |
logsDropped | - | WARN |
참고
텔레메트리 API를 사용하여 확장의 실시간 텔레메트리 데이터에 액세스은 항상 전체 플랫폼 이벤트 세트를 방출합니다. Lambda가 CloudWatch로 보내는 시스템 로그의 수준을 구성해도 Lambda Telemetry API 동작에는 영향을 미치지 않습니다.
사용자 지정 런타임을 사용한 애플리케이션 로그 수준 필터링
함수에 대한 애플리케이션 로그 레벨 필터링을 구성하면 Lambda는 AWS_LAMBDA_LOG_LEVEL
환경 변수를 사용하여 백그라운드에서 애플리케이션 로그 레벨을 설정합니다. 또한 Lambda는 AWS_LAMBDA_LOG_FORMAT
환경 변수를 사용하여 함수의 로그 형식을 설정합니다. 이러한 변수를 사용하여 Lambda 고급 로깅 제어를 사용자 지정 런타임에 통합할 수 있습니다.
Lambda 콘솔, AWS CLI 및 Lambda API로 사용자 지정 런타임을 사용하여 함수에 대한 로깅 설정을 구성하려면 이러한 환경 변수의 값을 확인하도록 사용자 지정 런타임을 구성합니다. 그런 다음 선택한 로그 형식 및 로그 수준에 따라 런타임의 로거를 구성할 수 있습니다.