import logging

문건희·2025년 6월 1일

회원가입

목록 보기
5/8

✅ 왜 print() 대신 logging을 쓸까?

print()logging 모듈
단순 출력만 함로그 수준, 기록 위치, 파일 저장 등 가능
로그 구분이 안 됨 ([INFO], [ERROR] 없음)로그의 종류를 구분할 수 있음 (info, error 등)
실무에서는 거의 안 씀실무에서는 거의 logging만 씀

🔧 1. 기본적인 logging 사용법

import logging

# 기본 설정 (화면 출력, 로그 레벨: INFO 이상만 표시)
logging.basicConfig(level=logging.INFO)

이제 print("로그인 성공") 대신:

logging.info("로그인 성공")

print("로그인 실패") 대신:

logging.error("로그인 실패")

🛠️ 2. 기존 코드에서 print → logging 변경하기

🔁 바꾸기 전 (print 사용)

def login(self, input_id, input_pw):
    if self.id == input_id and self.pw == input_pw:
        print("로그인을 성공하셨습니다.")
        return
    raise ValueError("아이디 또는 비밀번호가 올바르지 않습니다.")

✅ 바꾼 후 (logging 사용)

import logging

logging.basicConfig(level=logging.INFO)

class Member:
    def __init__(self, id, pw):
        self.id = id
        self.pw = pw

    def login(self, input_id, input_pw):
        if self.id == input_id and self.pw == input_pw:
            logging.info("✅ 로그인을 성공하셨습니다.")
            return
        raise ValueError("❌ 아이디 또는 비밀번호가 올바르지 않습니다.")

🔍 logging의 레벨 (중요도)

레벨 이름의미언제 쓰나
DEBUG디버깅용 상세 정보개발 중 내부 상태 확인할 때
INFO일반적인 정보 출력로그인 성공 등 정상 메시지
WARNING경고 (문제는 안 생겼지만 주의)예상 못한 입력, 미사용 기능 등
ERROR에러 (프로그램은 계속됨)비밀번호 틀림, 잘못된 값 등
CRITICAL치명적 에러 (프로그램 종료 가능 수준)시스템 중단, 치명적 실패 상황

🎯 정리: logging을 쓰면 이런 게 좋아

  1. ✅ 로그 수준을 구분할 수 있어 (info, error, debug, ...)
  2. 📄 나중엔 파일에 저장도 가능 (logging.FileHandler)
  3. 🧪 콘솔, 파일, 서버 등 다양한 출력 경로 설정 가능
  4. ✔ 실무에서 표준처럼 쓰임 (print()는 디버깅용)

💬 velog용 결론 한 줄

print()는 디버깅용이고, 실전 코드에서는 logging으로 로그의 종류와 수준을 구분해 관리하는 것이 좋다.


필요하면 로그를 파일로 저장하는 방법도 이어서 알려줄게! 😄

0개의 댓글