
파이썬을 활용한 로그 기록 - logging, logger
들어가며
파이썬의 logging은 로그 기록을 위한 패키지로 애플리케이션의 실행 상태, 디버깅 정보, 경고 및 에러 등을 기록할 수 있습니다. 이 글에서는 logging의 logger 객체에 대한 기본 사용법과 다양한 중요도의 로그 메시지를 생성하는 방법을 소개합니다.
로그 설정
logging은 별도의 패키지 설치없이 기본으로 제공되므로 import 구문으로 바로 사용할 수 있습니다.
logging.basicConfig
먼저 logging의 basicConfig를 활용하여 로그를 어떻게 기록할지에 대한 설정부터 시작합니다. 중요 옵션은 다음과 같습니다.
- level 옵션을 INFO로 설정하면, INFO 이상의 로그만 기록되며 DEBUG 수준의 로그는 기록되지 않습니다.
- filemode는 로그 파일을 어떻게 열지 지정하는 옵션입니다. 'a'는 기존 로그 뒤에 내용을 추가하고, 'w'는 기존 로그를 모두 지우고 새로 작성합니다.
옵션 | 설명 |
level | 로그 레벨 설정 | DEBUG, INFO, WARNING, ERROR, CRITICAL |
format | 로그 메시지 형식 설정 | asctime(시간), levelname(로그 레벨), message(로그 메시지) |
filename | 로그 저장 파일명 설정 |
filemode | 로그 파일 접근 모드 | a(append), w(write) |
위의 옵션을 참고하여 아래의 조건을 만족하는 로그 설정은 다음과 같습니다.
INFO 레벨 이상 + (시간, 레벨, 메시지)를 기록 + 파일명(app.log) + 기존 로그에 추가 기록
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filename=f'app.log',
filemode='a'
)
logging.StreamHandler
StreamHandler를 추가하면 콘솔에도 로그를 출력할 수 있습니다.
logger = logging.getLogger()
# StreamHandler 추가 (콘솔 출력용)
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
logger.addHandler(console_handler)
로그 기록
위에서 basicConfig와 StreamHandler로 설정한 로그를 기록하는 방법은 다음과 같습니다. logging과 기록하려는 로그의 레벨을 함께 작성합니다. 즉, logging 뒤에 원하는 로그 레벨 이름을 붙이고 괄호 안에 메시지를 전달하면 됩니다.
logging.debug('에러 메시지를 작성하세요')
logging.info('에러 메시지를 작성하세요')
logging.warning('에러 메시지를 작성하세요')
logging.error('에러 메시지를 작성하세요')
logging.critical('에러 메시지를 작성하세요')
로그 기록 예제
로그 설정 코드와 로그 기록 코드를 통합하여 실행하면, 결과는 다음과 같이 파일과 콘솔에 모두 로그가 출력됩니다.
import logging
## 로그 설정
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filename='app.log',
filemode='a'
)
logger = logging.getLogger()
## StreamHandler 추가 (콘솔 출력용)
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
logger.addHandler(console_handler)
## 로그 기록
logging.debug('에러 메시지를 작성하세요')
logging.info('에러 메시지를 작성하세요')
logging.warning('에러 메시지를 작성하세요')
logging.error('에러 메시지를 작성하세요')
logging.critical('에러 메시지를 작성하세요')


실제 로그를 사용하는 방법은 다음과 같습니다. 예를 들어서, 사용자 ID가 짝수일 경우 정상 처리, 홀수면 에러를 발생하는 함수에서의 실행 방법입니다.
import logging
# 로그 파일 + 콘솔 설정
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filename='app.log',
filemode='a'
)
logger = logging.getLogger()
# 콘솔 출력 핸들러 추가
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
logger.addHandler(console_handler)
# user_id 처리 함수
def process_user(user_id):
logger.info(f"사용자 {user_id} 정보 처리 시작")
try:
# 예: 사용자 ID가 짝수일 경우 정상 처리, 홀수면 에러 발생시킴
if user_id % 2 == 0:
logger.info(f"사용자 {user_id} 처리 완료")
else:
raise ValueError("올바르지 않은 사용자 ID")
except Exception as e:
logger.error(f"에러 발생: {e}")
# 함수 호출
process_user(2) # 정상 처리
process_user(3) # 에러 발생
'Python' 카테고리의 다른 글
[파이썬] 엑셀 통합파일(.xlsx) 시트별 저장 - ExcelWriter (0) | 2025.06.07 |
---|---|
[파이썬] 제21대 대선 후보 검색 트렌드 시각화 - pytrends, 네이버 데이터랩 (8) | 2025.05.27 |
[파이썬] 결측값 확인 및 처리 - 행/열별 결측값 개수, isna(), fillna() (8) | 2025.05.19 |
[파이썬] pyfiglet을 활용한 ASCII ART 아스키 아트 (2) | 2025.05.13 |
[파이썬] 이미지 객체 탐지 - CCTV 이미지를 활용한 교통량 검지 (9) | 2025.05.01 |