Cloud Functions에서 Python용 Cloud Logging을 저장하는 더 좋은 방법은 무엇인가요?
15123 단어 googlecloudpython
TL;DR
방법
1.표준 로거
2.구조화된 로깅
3.공식 로깅 핸들러
4.Cloud Logging API 직접 사용
추가 라이브러리 필요 없음
✔
✔
-
-
로그 심각도 허용
-
✔
✔
✔
다른 필드를 추가할 수 있습니다
-
✔
-
✔
파이썬 3.7 허용
✔
-
✔
✔
1. 표준 로깅 사용
이것은 가장 간단한 방법입니다. 표준 로거를 사용할 수 있지만 심각도를 지원하지 않습니다.
다음 코드는 Cloud Functions에서 표준 로거를 사용하는 예시입니다.
import logging
import flask
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def main(request):
print("PRINT message")
logger.debug("DEBUG message")
logger.info("INFO message")
logger.warning("WARNING message")
logger.error("ERROR message")
logger.critical("CRITICAL message")
logger.exception("EXCEPTION message")
return flask.jsonify({'result': 'ok'})
다음은 Cloud Functions 콘솔의 실제 스크린샷입니다.
항목의 모든 심각도가 default
임을 알 수 있습니다.
2. 구조적 로깅 사용
로그 항목에 로그 수준 또는 기타 특정fields을 포함하려면 직렬화된 JSON의 한 줄 형태로 stdout
또는 stderr
에 로그를 쓸 수 있습니다. 구조적 로깅 지원은 Python 3.8 이상에서 사용할 수 있습니다.
https://cloud.google.com/functions/docs/monitoring/logging#writing_structured_logs
다음 코드는 Cloud Functions에서 구조화된 로깅을 사용하는 예시입니다.
import logging
import flask
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def main(request):
print("PRINT message")
logger.debug("DEBUG message")
logger.info("INFO message")
logger.warning("WARNING message")
logger.error("ERROR message")
logger.critical("CRITICAL message")
logger.exception("EXCEPTION message")
return flask.jsonify({'result': 'ok'})
다음은 Cloud Functions 콘솔의 실제 스크린샷입니다.
모든 심각도가 올바르게 반영되었음을 확인할 수 있습니다.
Python 3.7 런타임에서 시도했을 때 공식 문서에 설명된 대로 심각도가 아래에서 지원되지 않았습니다.
3. 공식 로깅 핸들러 사용
Python 로거가 있는 로깅 핸들러는 공식 라이브러리에서 제공합니다.
https://cloud.google.com/logging/docs/setup/python#configuring_the_logging_handler
다음 코드는 Cloud Functions의 로깅 핸들러를 사용하는 예시입니다. (제가 사용한 google-cloud-logging의 라이브러리 버전은 2.7.0이었습니다. )
import logging
import flask
import google.cloud.logging
client = google.cloud.logging.Client()
client.setup_logging()
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def main(request):
print("PRINT message")
logger.debug("DEBUG message")
logger.info("INFO message")
logger.warning("WARNING message")
logger.error("ERROR message")
logger.critical("CRITICAL message")
logger.exception("EXCEPTION message")
return flask.jsonify({'result': 'ok'})
다음은 Cloud Functions 콘솔의 실제 스크린샷입니다.
모든 심각도가 올바르게 반영되었음을 확인할 수 있습니다.
4. Cloud Logging API 직접 사용
공식 문서에서는 Cloud Logging API 클라이언트를 사용하여 API를 직접 실행하는 방법도 설명합니다.
https://cloud.google.com/logging/docs/setup/python#use_the_cloud_client_library_directly
다음 코드는 Cloud Functions에서 호출 디렉토리를 사용하는 예시입니다. (제가 사용한 google-cloud-logging의 라이브러리 버전은 2.7.0이었습니다. )
import flask
from google.cloud import logging
logging_client = logging.Client()
log_name = "hello-logging-func4"
logger = logging_client.logger(log_name)
def main(request):
print("PRINT message")
logger.log_text("DEFAULT message", severity="DEFAULT")
logger.log_text("DEBUG message", severity="DEBUG")
logger.log_text("INFO message", severity="INFO")
logger.log_text("NOTICE message", severity="NOTICE")
logger.log_text("WARNING message", severity="WARNING")
logger.log_text("ERROR message", severity="ERROR")
logger.log_text("CRITICAL message", severity="CRITICAL")
logger.log_text("ALERT message", severity="ALERT")
logger.log_text("EMERGENCY message", severity="EMERGENCY")
return flask.jsonify({'result': 'ok'})
다음은 Cloud Functions 콘솔의 실제 스크린샷이지만 모든 로그 항목을 볼 수는 없습니다.
Cloud Logging 콘솔에서 모든 로그 항목을 볼 수 있습니다.
결론
이번 포스트에서는 Cloud Functions에서 Python용 Cloud Logging을 저장하는 방법을 소개하고, 장점과 단점을 간단하게 정리했습니다.
로그 수준이 필요하지 않다면 Python Standard Logger(No.1) 사용을 권장합니다.
로그 레벨이 필요한 경우에는 쉽게 설정할 수 있으므로 공식 로깅 핸들러(No.3)를 사용하는 것이 좋습니다. 또는 매우 유연하기 때문에 구조적 로깅(No.2)을 사용하는 것이 좋습니다.
Reference
이 문제에 관하여(Cloud Functions에서 Python용 Cloud Logging을 저장하는 더 좋은 방법은 무엇인가요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/koshilife/which-is-the-better-way-of-saving-cloud-logging-for-python-in-cloud-functions-3hje
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import logging
import flask
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def main(request):
print("PRINT message")
logger.debug("DEBUG message")
logger.info("INFO message")
logger.warning("WARNING message")
logger.error("ERROR message")
logger.critical("CRITICAL message")
logger.exception("EXCEPTION message")
return flask.jsonify({'result': 'ok'})
import logging
import flask
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def main(request):
print("PRINT message")
logger.debug("DEBUG message")
logger.info("INFO message")
logger.warning("WARNING message")
logger.error("ERROR message")
logger.critical("CRITICAL message")
logger.exception("EXCEPTION message")
return flask.jsonify({'result': 'ok'})
import logging
import flask
import google.cloud.logging
client = google.cloud.logging.Client()
client.setup_logging()
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def main(request):
print("PRINT message")
logger.debug("DEBUG message")
logger.info("INFO message")
logger.warning("WARNING message")
logger.error("ERROR message")
logger.critical("CRITICAL message")
logger.exception("EXCEPTION message")
return flask.jsonify({'result': 'ok'})
import flask
from google.cloud import logging
logging_client = logging.Client()
log_name = "hello-logging-func4"
logger = logging_client.logger(log_name)
def main(request):
print("PRINT message")
logger.log_text("DEFAULT message", severity="DEFAULT")
logger.log_text("DEBUG message", severity="DEBUG")
logger.log_text("INFO message", severity="INFO")
logger.log_text("NOTICE message", severity="NOTICE")
logger.log_text("WARNING message", severity="WARNING")
logger.log_text("ERROR message", severity="ERROR")
logger.log_text("CRITICAL message", severity="CRITICAL")
logger.log_text("ALERT message", severity="ALERT")
logger.log_text("EMERGENCY message", severity="EMERGENCY")
return flask.jsonify({'result': 'ok'})
이번 포스트에서는 Cloud Functions에서 Python용 Cloud Logging을 저장하는 방법을 소개하고, 장점과 단점을 간단하게 정리했습니다.
로그 수준이 필요하지 않다면 Python Standard Logger(No.1) 사용을 권장합니다.
로그 레벨이 필요한 경우에는 쉽게 설정할 수 있으므로 공식 로깅 핸들러(No.3)를 사용하는 것이 좋습니다. 또는 매우 유연하기 때문에 구조적 로깅(No.2)을 사용하는 것이 좋습니다.
Reference
이 문제에 관하여(Cloud Functions에서 Python용 Cloud Logging을 저장하는 더 좋은 방법은 무엇인가요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/koshilife/which-is-the-better-way-of-saving-cloud-logging-for-python-in-cloud-functions-3hje텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)