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

파이썬

PyQt 및 AI 인공 지능 연동 프로그램 만들기

2023년 06월 17일

PyQt는 그래픽 사용자 인터페이스(GUI) 개발을 위한 강력한 Python 프레임워크이며, 인공 지능(AI)은 데이터 분석, 패턴 인식 및 지능형 의사 결정 기능으로 다양한 산업에 혁명을 일으키고 있습니다. PyQt 및 AI 인공 지능 결합함으로써 개발자는 AI 알고리즘의 힘을 활용하고 사용자에게 지능형 기능을 제공하는 GUI 응용 프로그램을 만들 수 있습니다. PyQt 및 AI 인공…

Read More
파이썬

파이썬 기초 문법과 활용 예제

2024년 05월 07일

파이썬은 강력하고 다양한 기능을 가진 프로그래밍 언어로, 기초 문법을 이해하고 활용하는 것은 프로그래밍을 시작하는 데 있어 중요한 첫걸음입니다. 이 글에서는 파이썬의 기초 문법과 활용 예제에 대해 자세히 살펴보겠습니다. 파이썬을 공부하면서 코딩의 세계에 입문하고 싶은 분들에게 도움이 될 것이라고 기대합니다. 파이썬은 간결하고 가독성이 높아서 많은 개발자들이 선택하는 언어 중 하나입니다. 변수, 조건문, 반복문 등의 기본적인 문법을 이해하면 간단한 프로그램을 작성할 수 있으며, 더 나아가 다양한 프로젝트를 구현할 수 있게 됩니다. 또한 파이썬은 데이터 분석, 인공지능, 웹 개발 등 다양한 분야에서 활용되므로, 학습하는 가치가 크다고 할 수 있습니다. 이 문서를 통해 파이썬의 기초 문법을 이해하고 활용하는 방법을 자세히 알아보겠습니다.

Read More
파이썬

파이썬 Tkinter 파일 불러오기-filedialog

2023년 05월 15일

Python Tkinter GUI 요소들은 대부분 기본적인 기능만을 가지고 있기 때문에, 더욱 많은 기능이 필요한 경우 사용자에게 파일을 선택하거나 저장할 수 있는 대화 상자를 제공해야 할 때가 있습니다. 이 때, filedialog 모듈을 사용할 수 있습니다. 이 글에서는 파이썬 Tkinter 파일 불러오기-filedialog 에 대해 알아보겠습니다.

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