기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 logging 모듈 기초와 활용 📝

로그 파일 아이콘

파이썬 logging 모듈 기초와 활용 📝

애플리케이션의 동작을 기록하고 문제를 추적할 때 필수인 logging 모듈의 사용법을 단계별로 살펴봅니다.

1. 기본 설정과 로그 출력

import logging

# 기본 설정: INFO 레벨 이상의 메시지를 출력
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s [%(levelname)s] %(message)s')

logging.debug("디버그 메시지(보통 보이지 않음)")
logging.info("앱이 시작되었습니다")
logging.warning("경고: 사용량이 높습니다")
logging.error("에러 발생!")
logging.critical("치명적 오류!")

2. 파일 핸들러와 포맷터 추가

import logging

logger = logging.getLogger("myapp")
logger.setLevel(logging.DEBUG)

# 콘솔 핸들러
console_h = logging.StreamHandler()
console_h.setLevel(logging.INFO)

# 파일 핸들러
file_h = logging.FileHandler("app.log", encoding="utf-8")
file_h.setLevel(logging.DEBUG)

# 포맷터
fmt = logging.Formatter('%(asctime)s [%(levelname)s] %(name)s: %(message)s')
console_h.setFormatter(fmt)
file_h.setFormatter(fmt)

logger.addHandler(console_h)
logger.addHandler(file_h)

logger.info("콘솔과 파일에 기록됩니다")
logger.debug("디버그 레벨은 파일에만 기록됩니다")

더 자세한 함수/클래스 기초는 함수 완전 정리를 참고하세요.

요약

  • basicConfig로 간단히 로그 레벨과 포맷을 설정할 수 있습니다.
  • 콘솔/파일 핸들러를 추가해 출력 대상을 다양화할 수 있습니다.
  • 포맷터로 로그 메시지 양식을 자유롭게 커스터마이징 가능합니다.

댓글

가장 많이 본 글

Icons by Flaticon