| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 푸리에 변환
- GridLayout
- Codility
- 상속
- 사전학습
- g검정
- html 기초
- inline
- 미디어쿼리
- css 기초
- oracle
- ObjectOutputStream
- Position
- iframe 태그
- rnn
- FFT
- html 프로젝트
- 반응형웹
- 파이썬
- Database
- BorderLayout
- 예제
- java
- 반응형 웹 프로젝트
- HTML
- 메서드
- 퍼셉트론
- FileWriter
- CSS
- FlowLayout
- Today
- Total
도라에몽주머니
[Python] logging 모듈을 사용해 실행 로그 파일 남기기 본문
안건에서 로그 내역을 남겨 에러 메세지를 관리할 필요가 있어, logging 모듈의 사용법이나 작성 방법 등을 정리해보려고 한다.
https://docs.python.org/ko/3.13/howto/logging.html
Logging HOWTO
Author, Vinay Sajip <vinay_sajip at red-dove dot com>,. This page contains tutorial information. For links to reference information and a logging cookbook, please see Other resources. Basic Logging...
docs.python.org
로그(Log)
로그(Log) 란 컴퓨터 시스템, 애플리케이션, 네트워크 등에서 발생하는 모든 일에 대한 기록을 말한다. 로그는 보통 시스템에서 문제가 발생했을 때나 사고가 생겼을 때, 어디에서 언제 문제가 발생했는지 파악할 수 있도록 하기 위해 작성된다. 뿐만 아니라, 로직이 의도한 대로 흐르고 있는지 등을 확인할 때에도 로그가 사용된다.
로깅(Logging)
로깅은 쉽게 말하면 로그를 작성하는 것이다. 단순히 오류 메세지나 값을 확인하기 위해 print()를 사용해 콘솔에서 내용을 확인해 볼 수도 있지만, 해당 내용이 warning인지, 에러인지, 확인을 위한 값을 출력한 것인지를 알기는 어렵기 때문에 logging 모듈을 사용해서 알기 쉽게 정리할 필요가 있다.
getLogger
getLogger는 로거에 접근할 때 사용하는 메소드이다. 여러 개의 로거를 만들고 싶은 경우에 주로 사용한다.
아래의 코드와 같이 각각의 로거를 정의할 수 있다.
import logging
logger1 = logging.getLogger('logger1')
logger2 = logging.getLogger('logger2')
Log Level
Log level은 로그의 심각한 정도를 나타낸다. 기본적으로 파이썬에서 제공하는 로그의 기준 레벨은 아래와 같다.
| 수준 (Level) | 설명 |
| DEBUG | (문제 해결에 필요한) 상세한 정보 |
| INFO | 예상대로 동작하는지에 대한 확인 |
| WARNING | 예상치 못한 일이 발생했거나 앞으로 발생할 가능성이 있는 문제에 대한 표시 (소프트웨어는 제대로 동작하지만 경고 표시) |
| ERROR | WARNING보다 심각한 문제로 인해 소프트웨어가 일부 기능을 동작하지 못하고 중지 |
| CRITICAL | 심각한 에러로 인해 프로그램이 작동하지 못하고 중지 |
기본값은 WARNING으로 설정되어 있어서 로그 수준을 명시하지 않으면 WARNING, ERROR, CRITICAL에 해당하는 내용들이 로그로 기재된다.
basicConfig
로그의 기본 설정을 하는 함수이다. 이 함수를 통해 로그를 기록할 파일을 설정하거나, 최소 레벨을 설정하거나, 출력 형식을 정의하는 등 기본 설정을 정의할 수 있다.
logging.basicConfig(
filename="log_file.log" # 로그를 기록할 파일 경로
encoding='utf-8' # 인코딩 설정
level=logging.ERROR # 로그 레벨을 설정(여기에서는 ERROR)
format="[ %(asctime)s | %(levelname)s ] %(message)s", # 로그에 날짜, 레벨, 메시지를 포함
datefmt="%Y-%m-%d %H:%M:%S" # 날짜 형식을 'YYYY-MM-DD HH:MM:SS'로 설정
)
로그 파일 예제
이제 로그 파일을 작성하는 코드를 써보자. 예시 코드는 함수 형태로 작성해볼 것이다.
우선 로깅을 설정하는 함수인 setup_logger부터 작성해보자. 이번에는 [ 2025-03-11 00:00:00 | DEBUG] 에러 메세지 의 형태로 로그를 기록한다.
import logging
def setup_logger(log_file: str, log_level=logging.DEBUG):
"""
로깅을 설정하는 함수
Args:
log_file: 로그 파일 경로
log_level: 로깅 레벨 (기본값 : DEBUG)
"""
logging.basicConfig(
filename=log_file, # 로그를 기록할 파일 경로
level=log_level, # 로그 레벨
format="[ %(asctime)s | %(levelname)s ] %(message)s", # 로그 포맷
datefmt="%Y-%m-%d %H:%M:%S" # 날짜 표기 포맷
filemode='a' # 로그 파일에 추가 모드로 기록 (기본값: 'a' 추가 모드)
)
이제 로깅 함수를 설정했으니 실제로 사용해보자.
def main():
# 'example.log'라는 파일에 DEBUG 레벨로 로그 기록
setup_logger('example.log', logging.DEBUG)
# 다양한 레벨의 로그 메시지 기록
logging.debug("디버그 메시지") # [ 2025-03-11 00:00:00 | DEBUG ] 디버그 메시지
logging.info("정보 메시지") # [ 2025-03-11 00:00:00 | INFO ] 정보 메시지
logging.warning("경고 메시지") # [ 2025-03-11 00:00:00 | WARNING ] 경고 메시지
logging.error("오류 메시지") # [ 2025-03-11 00:00:00 | ERROR ] 오류 메시지
logging.critical("치명적 오류 메시지") # [ 2025-03-11 00:00:00 | CRITICAL ] 치명적 오류 메시지
# 추가적인 로깅 예시
logging.info("로그 작성이 완료되었습니다.") # [ 2025-03-11 14:30:04 | INFO ] 로그 작성이 완료되었습니다.
if __name__ == "__main__":
main()
이런 방식으로 오류를 지속적으로 기록하고 추적해야 하는 프로젝트에 로깅을 활용할 수 있다. 다음 안건이나 프로젝트에서도 다시 활용해 볼 수 있었으면 좋겠다.
'Study > Python' 카테고리의 다른 글
| [환경구축] 윈도우 환경에서 pyenv와 poetry로 파이썬 환경 구축하기 (0) | 2025.01.05 |
|---|---|
| [Python] append와 리스트 컴프리헨션 (1) | 2024.09.29 |
| 코드업 기초 100제 헷갈리는 파이썬 문법 정리 (0) | 2023.06.02 |