print() 대신 logging을 쓸까?print() | logging 모듈 |
|---|---|
| 단순 출력만 함 | 로그 수준, 기록 위치, 파일 저장 등 가능 |
로그 구분이 안 됨 ([INFO], [ERROR] 없음) | 로그의 종류를 구분할 수 있음 (info, error 등) |
| 실무에서는 거의 안 씀 | 실무에서는 거의 logging만 씀 |
import logging
# 기본 설정 (화면 출력, 로그 레벨: INFO 이상만 표시)
logging.basicConfig(level=logging.INFO)
이제 print("로그인 성공") 대신:
logging.info("로그인 성공")
print("로그인 실패") 대신:
logging.error("로그인 실패")
def login(self, input_id, input_pw):
if self.id == input_id and self.pw == input_pw:
print("로그인을 성공하셨습니다.")
return
raise ValueError("아이디 또는 비밀번호가 올바르지 않습니다.")
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("❌ 아이디 또는 비밀번호가 올바르지 않습니다.")
| 레벨 이름 | 의미 | 언제 쓰나 |
|---|---|---|
DEBUG | 디버깅용 상세 정보 | 개발 중 내부 상태 확인할 때 |
INFO | 일반적인 정보 출력 | 로그인 성공 등 정상 메시지 |
WARNING | 경고 (문제는 안 생겼지만 주의) | 예상 못한 입력, 미사용 기능 등 |
ERROR | 에러 (프로그램은 계속됨) | 비밀번호 틀림, 잘못된 값 등 |
CRITICAL | 치명적 에러 (프로그램 종료 가능 수준) | 시스템 중단, 치명적 실패 상황 |
info, error, debug, ...)logging.FileHandler)print()는 디버깅용)
print()는 디버깅용이고, 실전 코드에서는logging으로 로그의 종류와 수준을 구분해 관리하는 것이 좋다.
필요하면 로그를 파일로 저장하는 방법도 이어서 알려줄게! 😄