`print()`와 `logging`

문건희·2025년 6월 2일

회원가입

목록 보기
6/8

좋아, 정말 중요한 질문이야.
print()logging은 겉보기에는 똑같이 "출력"해주지만,
의도, 상황, 기능 면에서 완전히 다른 목적을 가지고 있어.


print() vs logging 차이: 언제 어떤 걸 써야 하나?


1️⃣ print()의 역할: 단순한 콘솔 출력 (학습, 디버깅용)

항목설명
💡 목적단순하게 값이나 메시지를 확인할 때 사용
🎓 사용 예변수 값이 제대로 들어갔는지 확인할 때
📍 출력 대상무조건 콘솔(터미널)에만 출력
📁 로그 파일 저장❌ 불가능
🧪 대표 예시
print("지금 id 값은:", id)

학생, 초보자, 빠른 테스트 환경에서 유용
❌ 실전 코드/운영 시스템에서는 사용하지 않음 (너무 단순해서)


2️⃣ logging의 역할: 로그를 기록하고 관리하는 시스템 (운영용)

항목설명
💡 목적프로그램 상태를 추적하고 기록하여 문제 분석에 활용
🔐 로그 수준(Level)debug, info, warning, error, critical
🖨 출력 대상콘솔 + 파일, 서버, DB 등 다양
📁 파일 저장✅ 가능 (filename='log.txt' 등 설정 가능)
🧪 대표 예시
import logging
logging.info("로그인 성공")
logging.error("비밀번호 오류")

✅ 실전 서비스, 서버, 프로젝트에서는 무조건 logging 사용
❌ 단순 출력 이상을 원한다면 print()로는 부족


🔎 logging 로그 레벨 비교

로그 레벨의미사용 예시
DEBUG아주 상세한 내부 동작디버깅용 변수 추적
INFO일반 정보성 메시지로그인 성공, 등록 완료
WARNING경고 (문제는 없지만 조심해야 할 상태)곧 만료될 계정
ERROR에러 발생 (프로그램은 계속 동작)로그인 실패, 예외 처리
CRITICAL심각한 오류 (서비스 중단 가능성 있음)서버 종료, DB 연결 실패

📌 logging.basicConfig(level=logging.INFO)로 설정하면
INFO, WARNING, ERROR, CRITICAL만 출력됨


✅ 어떤 상황에서 무엇을 써야 할까?

상황적합한 도구설명
값이 잘 들어갔는지 확인print()간단히 찍어보기 용도
함수의 흐름을 따라가고 싶을 때print() or logging.debug()디버깅 용도
회원가입, 로그인 성공 로그 기록logging.info()상태 기록
잘못된 입력, 실패 상황logging.error()문제 추적용
사용자에게 보여줄 메시지print() or UI로 전달(웹/앱 화면에 표시하는 용도는 별도 처리 필요)
실시간 운영 중인 시스템무조건 logging로그 저장, 분석 등 필수 요소

📌 실전 예: 둘의 용도 비교

# ✅ 학습 or 디버깅
print("회원 목록:", self.members)

# ✅ 실무 서비스
logging.info("3명의 회원이 등록되었습니다.")
logging.error("로그인 실패: 잘못된 비밀번호")

✅ 결론 요약

항목print()logging
목적디버깅, 실습용운영, 유지보수, 분석용
로그 수준❌ 없음✅ 있음 (info, error 등)
파일 저장❌ 불가✅ 가능
포맷 지정❌ 불가✅ 가능
실무 적합성❌ 낮음✅ 필수

0개의 댓글