AWS 설명서에서 제안한대로 :
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_logging_handler(event, context):
logger.info('got event{}'.format(event))
logger.error('something went wrong')
이제 :
import logging
logging.basicConfig(level = logging.INFO)
logging.info("Hello World!")
Cloud Watch
에서 코드 인쇄의 첫 번째 스 니펫
콘솔이지만 두 번째는 아닙니다.
두 스 니펫이 루트 로거를 사용하고 있으므로 차이가 없습니다.
-
답변 # 1
-
답변 # 2
비슷한 문제가 있었고 람다 컨테이너가 람다 코드를 가져 오기 전에 핸들러를 추가하기 위해 logging.basicConfig를 호출하고 있다고 생각합니다. 이것은 나쁜 형태 인 것 같습니다 ...
해결 방법은 루트 로거 처리기가 구성되었는지 확인한 경우 제거하고 해당 구성 요소와 원하는 로그 수준 (basicConfig 사용)을 추가 한 다음 처리기를 복원하는 것입니다.
logging.basicConfig를 실행하기 전에이 기사를 참조하십시오.
-
답변 # 3
실제로 동일한 로거를 참조하지 않을 수 있습니다. 첫 번째 스 니펫에서 다음의 리턴을 기록하십시오.
logging.Logger.manager.loggerDict
와이즈 비즈를 반환합니다 로거 중 하나가 이미 초기화되었습니다.
또한
와이즈 비즈dict
에서 문서,logging
에 대한 중요한 참고 사항 :소스 : https://docs.python.org/2/library/logging.html#logging.basicConfig
-
답변 # 4
로깅이 작동하지 않는 이유는 AWS Lambda Python 런타임 때문에 선택한 런타임 버전에 따라 기록 된 메시지의 형식을 수정하고 사용 가능한 경우 레코드에 일부 메타 데이터를 추가 할 수있는 로깅 핸들러를 사전 구성합니다.미 설정은 로그 수준입니다. 즉, 보내려는 로그 메시지 유형에 관계없이 실제로 인쇄되지 않습니다.
logging.basicConfig
를 올바르게 사용하기 위해 AWS 문서 자체 AWS Lambda 컨텍스트의 라이브러리에서는 루트 로거에 대한 로그 수준 만 설정하면됩니다.Does basic configuration for the logging system by creating a StreamHandler with a default Formatter and adding it to the root logger. The functions debug(), info(), warning(), error() and critical() will call basicConfig() automatically if no handlers are defined for the root logger.
This function does nothing if the root logger already has handlers configured for it.
Python-script가 AWS Lambda에서 실행 가능하고 로컬 Python 인터프리터에서도 실행 가능하도록하려면 처리기가 구성되었는지 여부를 확인하고
logging
로 대체 할 수 있습니다. (기본 stderr-handler를 만듭니다) 그렇지 않으면 :import logging logging.getLogger().setLevel(logging.INFO)
-
답변 # 5
기본적으로 AWS 로깅 원숭이 패치는 다음과 같은 매우 특정한 방식으로 처리해야합니다.
<올>로그 수준은 스크립트의 최상위 수준 (예 : 가져 오기 시간)에서 설정됩니다.
관심이있는 로그 문은 람다 함수 내에서 호출됩니다
파이썬 모듈 임포트에서 임의의 코드를 실행하지 않는 것이 일반적으로 좋은 형태로 간주되므로, 람다 함수 내에서만 무거운 리프팅이 발생하도록 코드를 재구성 할 수 있어야합니다.
basicConfig
관련 자료
- machine learning - 파이썬만으로 소프트웨어를 만들 수 있습니까?
- Python docx2txt를 사용하여 Word 문서에서 이미지 추출
- 파이썬을 사용하여 파일의 특정 줄을 삭제하는 방법은 무엇입니까?
- 항상 두 번째 항목을 제외하고 셀레늄 Python을 사용하여 웹 요소를 반복합니다
- Python 요청을 사용할 때 잘못된 URL
- pip - ctypes를 사용하여 파이썬 모듈 만들기
- flux - Python을 사용하여 Influxdbv2 데이터를 쿼리 할 수없는 이유는 무엇입니까?
- For 루프, 논리 오류를 사용하여 파이썬에서 정수 반복
- embedded - python을 사용하는 trace32 - t32_readmemoryobj 함수에서 반환 데이터를 해석하는 방법
- pysocks python을 사용하여 https reuqest를 보내는 방법
- 명령 줄을 사용하지 않고 파이썬 파일을 실행할 수있는 방법이 있습니까?
- Python Flask에서 CSS 사용
- Python argparse를 사용하여 명령 줄 문제를 해결하는 방법은 무엇입니까?
- python (python -m httpserver)을 사용하여 로컬 서버에서 html 파일을 열려면 어떻게해야합니까?
- json - 파이썬을 사용하여 사전 객체를 어떻게 삭제할 수 있습니까?
- C #을 사용한 사용자 입력 후 Python 출력을 C #에 표시
- 파이썬을 사용하여 문자열 '5a'를 '5b'로 증가시키는 방법
- 다른 봇이 뭔가를하게 만드는 파이썬을 사용하여 불일치 봇 명령을 만드는 방법
- 파이썬에서 목록을 사용하지 않고 4 개의 숫자 중 가장 큰 숫자를 찾는 방법
- 입력을 위해 Python 생성기를 사용하는 동안 keras의 OOM 오류
@StevenBohrer의 답변 링크에서 맨 위 답변에서 바로 복사했습니다 (마지막 줄을 내 자신의 구성으로 대체하여 트릭을 수행했습니다).