Skip to content
toylee blog
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

  • 홈
  • 컴퓨터 활용
  • 프로그래밍
    • 파이썬
    • 자바(Java)
    • Flutter
    • HTML
    • Linux
    • 워드프레스
  • 맥북
  • IT 일반
  • 블로그 소개
  • 문의하기
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

파이썬 logging 기본 패턴: 실무에서 바로 쓰는 로그 설정과 파일 저장 방법

toylee, 2026년 10월 02일

파이썬에서 print 대신 로깅을 써야 하는 이유

파이썬으로 프로그램을 만들 때 진행 상황을 확인하기 위해 가장 먼저 쓰는 코드는 보통 print() 함수입니다. 간단한 스크립트를 실행할 때는 print만으로도 충분하지만, 코드가 길어지고 자동화 스크립트나 백그라운드 프로그램으로 발전하면 한계에 부딪힙니다. 프로그램이 언제 실행되었는지 시간 정보를 알기 어렵고, 에러가 발생했을 때 어느 함수에서 문제가 생겼는지 추적하기 번거로우며, 터미널 창을 닫는 순간 그동안 출력된 중요한 기록이 모두 사라지기 때문입니다.

[목차]

  • 파이썬에서 print 대신 로깅을 써야 하는 이유
  • 로그 레벨의 종류와 이해
  • 실무에서 가장 많이 쓰는 기본 설정 패턴
  • 코드 구조화와 모듈별 로거 사용 요령
  • 파이썬 logging 설정 시 자주 하는 실수
  • 실무 점검 체크리스트
  • 마무리

이 글에서는 실무 환경에서 프로그램의 안정성을 높이고 오류를 빠르게 파악하기 위해 반드시 알아야 할 파이썬 logging 모듈의 기본 패턴을 다룹니다. 로그 레벨 개념부터 포맷 설정, 파일로 기록을 남기는 방법까지 차근차근 살펴보겠습니다.

로그 레벨의 종류와 이해

파이썬의 표준 logging 모듈은 메시지의 중요도에 따라 5가지 단계(Level)를 제공합니다. 상황에 맞는 적절한 레벨을 선택해야 나중에 로그 파일을 분석할 때 필요한 정보만 효율적으로 필터링할 수 있습니다.

  • DEBUG: 개발 과정에서 변수 값이나 상세한 흐름을 추적하기 위한 아주 세부적인 정보
  • INFO: 프로그램이 정상적으로 작동하고 있음을 알리는 일반적인 실행 정보 (예: ‘데이터 수집 시작’, ‘파일 저장 완료’)
  • WARNING: 당장 프로그램이 멈추지는 않지만, 잠재적인 문제나 주의가 필요한 상황 (예: ‘설정 파일이 없어 기본값으로 대체함’)
  • ERROR: 특정 기능이나 요청을 처리하는 과정에서 문제가 발생해 실패했을 때
  • CRITICAL: 프로그램 자체가 더 이상 실행될 수 없는 심각한 시스템 중단 상황

실무에서 가장 많이 쓰는 기본 설정 패턴

로깅을 사용하려면 먼저 logging.basicConfig() 함수를 이용해 기본 설정을 잡아주어야 합니다. 이 설정은 프로그램 전체에서 최초 한 번만 호출하는 것이 일반적입니다. 로그 출력 형식(format), 저장될 파일 이름(filename), 그리고 출력할 최소 로그 레벨(level)을 지정할 수 있습니다.

아래 코드는 가장 널리 쓰이는 표준적인 로깅 설정 예시입니다.

import logging

# 기본 로깅 설정
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
    handlers=[
        logging.FileHandler('app.log', encoding='utf-8'),
        logging.StreamHandler()
    ]
)

# 로그 메시지 출력 테스트
logging.debug('디버그 메시지입니다. level이 INFO이므로 출력되지 않습니다.')
logging.info('프로그램이 정상적으로 시작되었습니다.')
logging.warning('주의: 디스크 용량이 부족할 수 있습니다.')
logging.error('파일을 읽어오는 중 에러가 발생했습니다.')

코드 구조화와 모듈별 로거 사용 요령

스크립트 규모가 커지면 단일 설정만으로는 부족합니다. 여러 개의 파이썬 파일을 임포트해서 사용하는 경우, logging.getLogger(__name__) 방식을 사용해 모듈별로 독립된 로거를 생성하는 것이 실무 표준입니다.

이렇게 하면 로그 메시지만 보고도 어떤 파일과 함수에서 발생한 기록인지 정확하게 파악할 수 있습니다.

import logging

# 현재 모듈 이름을 바탕으로 로거 생성
logger = logging.getLogger(__name__)

def process_data(data):
    logger.info(f'데이터 처리 시작: {len(data)}건')
    try:
        # 비즈니스 로직 수행
        if not data:
            raise ValueError('데이터가 비어 있습니다.')
        logger.info('데이터 처리가 성공적으로 완료되었습니다.')
    except Exception as e:
        logger.error(f'데이터 처리 중 오류 발생: {e}')

if __name__ == '__main__':
    # 메인 실행부에서 전체 로깅 환경 설정
    logging.basicConfig(level=logging.INFO, format='%(asctime)s [%(levelname)s] %(name)s: %(message)s')
    process_data([])

파이썬 logging 설정 시 자주 하는 실수

초보자들이 로깅 모듈을 도입할 때 흔히 겪는 시행착오를 정리했습니다. 코드를 작성하기 전에 아래 항목들을 미리 확인해 보세요.

  • print 함수와 혼용하기: 중요한 데이터나 에러 메시지를 여전히 print로 출력하면 로그 파일에 남지 않아 추적이 어렵습니다. 모든 출력은 로거를 통하도록 일원화하는 것이 좋습니다.
  • basicConfig 중복 호출: basicConfig는 프로그램 실행 중 한 번만 적용됩니다. 여러 파일에서 각각 호출하면 나중에 설정이 꼬이거나 원하는 대로 파일 출력이 되지 않을 수 있습니다.
  • 인코딩 설정 누락: 윈도우 환경에서 filename 인자를 통해 파일을 생성할 때 encoding='utf-8'을 지정하지 않으면, 한글 로그가 깨지거나 UnicodeEncodeError가 발생할 수 있습니다.
  • 레벨 설정 실수: 개발 단계에서는 DEBUG 레벨로 두어 상세히 보다가, 실제 운영(Production) 환경에 배포할 때는 INFO나 WARNING 레벨로 높여 불필요한 로그 용량 증가를 막아야 합니다.

실무 점검 체크리스트

프로그램에 로깅 코드를 완성한 뒤, 배포 전이나 테스트 단계에서 아래 항목을 차례대로 점검해 보세요.

  • [ ] 프로그램 전체에서 print() 대신 logging 모듈을 사용하고 있는가?
  • [ ] 로그 출력 포맷에 타임스탬프(asctime)와 로그 레벨(levelname)이 포함되어 있는가?
  • [ ] 운영 환경에 맞는 최소 로그 레벨(INFO 또는 WARNING)이 올바르게 설정되었는가?
  • [ ] 로그 파일 저장 시 encoding='utf-8' 옵션을 추가하여 한글 깨짐을 방지했는가?
  • [ ] 대규모 로그 파일이 무한히 커지는 것을 방지할 대책(예: RotatingFileHandler 고려)이 마련되어 있는가?

마무리

파이썬의 logging 모듈은 처음에는 설정 항목이 많아 복잡해 보이지만, 기본 패턴만 익혀두면 프로그램의 신뢰성을 엄청나게 높여주는 강력한 도구입니다. 오늘 소개한 기본 설정과 모듈별 로거 패턴을 실제 프로젝트에 적용해 보시기 바랍니다. 에러 추적 시간이 눈에 띄게 줄어드는 것을 경험하실 수 있을 것입니다.

파이썬

글 탐색

Previous post

Related Posts

파이썬

PyQt6 계산기 만들기

2023년 05월 15일

프로그래밍을 배우는 많은 사람들이 자신의 첫 번째 프로그램으로 계산기를 만드는 것을 선택합니다. 그 이유는 계산기를 만들면, 파이썬에서 GUI 프로그래밍의 기본 개념을 배울 수 있기 때문입니다. 심플한 PyQt6 계산기 만들기 및 방법을 배울 것입니다.

Read More
파이썬

파이썬 PyQt6 DB 접속 (SQLite, MySQL, PostgreSQL)

2023년 06월 15일

파이썬 PyQt6 DB SQLite MySQL PostgreSQL 접속 및 연결 방법에 대해서 파이큐티레 라이브러리를 활용하여 각각 예제를 통해서 공부해 봅시다. sqlite를 제외한 나머지는 sql 계정이 있어야 접속 가능합니다.

Read More
파이썬

파이썬 딕셔너리 (dictionary) 사용 방법

2023년 07월 02일

오늘은 파이썬 딕셔너리 (dictionary) 사용 방법에 대해 정리합니다. 딕셔너리는 파이썬에서 가장 중요한 데이터 타입 중 하나입니다. 데이터를 저장하고 관리 할 수 있습니다. 딕셔너리(Dictionary)는 키와 값으로 구성되며, 이는 리스트(list)나 튜플(tuple)과 같은 다른 데이터 타입과는 다릅니다. 딕셔너리의 키와 값은 중복이 허용되지 않습니다. 이는 다양한 데이터를 다룰 때 매우 유용합니다. 딕셔너리는 중괄호 {}를…

Read More

최신 글

  • 파이썬 logging 기본 패턴: 실무에서 바로 쓰는 로그 설정과 파일 저장 방법
  • 윈도우 시작프로그램 정리 체크리스트: 부팅 속도 높이는 실무 요령
  • 카페 작업용 맥북 액세서리 추천 및 무게별 조합 요령
  • 로컬 개발 환경 초기화 요령: 맥과 윈도우에서 꼬인 의존성 깔끔하게 정리하기
  • img alt 속성 제대로 쓰는 방법: 웹 접근성과 검색 최적화를 위한 대체 텍스트 작성 요령

최신 댓글

보여줄 댓글이 없습니다.

보관함

  • 2026년 10월
  • 2026년 9월
  • 2026년 8월
  • 2026년 2월
  • 2025년 7월
  • 2025년 6월
  • 2025년 5월
  • 2025년 4월
  • 2025년 3월
  • 2025년 2월
  • 2025년 1월
  • 2024년 12월
  • 2024년 11월
  • 2024년 8월
  • 2024년 6월
  • 2024년 5월
  • 2024년 3월
  • 2024년 2월
  • 2023년 11월
  • 2023년 9월
  • 2023년 8월
  • 2023년 7월
  • 2023년 6월
  • 2023년 5월
  • 2023년 4월
  • 2023년 3월
  • 2023년 2월

카테고리

  • Flutter
  • HTML
  • IT 일반
  • Linux
  • 맥북
  • 워드프레스
  • 자바(Java)
  • 컴퓨터 활용
  • 파이썬
  • 프로그래밍

사이트 안내

  • 블로그 소개
  • 문의하기
  • 개인정보 처리방침
©2026 toylee blog | WordPress Theme by SuperbThemes