파이썬 개발 시 로그를 확인하려는 경우, 로깅을 사용할 수 있다.
로깅(logging)이란
`logging` 모듈은 Python에서 로깅 기능을 제공하는 표준 라이브러리로, 애플리케이션의 실행 동안 발생하는 이벤트와 정보를 기록하는 도구
Python에서는 logging 모듈을 사용하여 로깅을 구현할 수 있다.
사용방법
import logging
# 로깅 설정
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
data = "logging test"
# 로그 출력
logging.info("데이터: %s", data)
`logging` 모듈의 주요 클래스
1. `Logger`: 로그 메시지를 생성하고 기록하는 기본 클래스. 로그 레코드를 만들고 해당 레코드를 핸들러에게 전달함.
2. `Handler`: 로그 레코드를 처리하는 핸들러를 나타내는 기본 클래스. 핸들러는 로그 메시지를 특정 위치에 출력하거나 저장하는 역할을 함. 다양한 핸들러 클래스가 제공됨. (`StreamHandler`, `FileHandler`, `RotatingFileHandler`, `TimedRotatingFileHandler` 등)
3. `Formatter`: 로그 레코드를 원하는 형식으로 포맷하는 클래스. 로그 메시지의 출력 형식을 지정할 수 있음.
4. `Filter`: 로그 레코드를 필터링하는 클래스. 로그 레코드의 속성을 기반으로 특정 조건에 부합하는 로그만 처리하도록 설정할 수 있음.
5. `LoggerAdapter`: `Logger` 객체를 래핑하여 추가적인 기능을 제공하는 어댑터 클래스. 로거 객체를 커스터마이징하고, 로그 레코드에 추가 정보를 추가할 수 있음.
이외에도 `Filterer`, `LoggerManager`, `LogRecord` 등 다양한 클래스와 함수가 있다.
사용예시
1. `logging.debug`: 디버깅 정보를 기록할 때 사용한다. 일반적으로 개발 중 디버깅을 위해 사용되며, 상세한 정보를 제공한다.
import logging
logging.debug("This is a debug message")
2. `logging.info`: 중요한 이벤트나 정보를 기록할 때 사용한다. 프로그램의 주요 진행 상황을 추적하고 기록한다.
import logging
logging.info("This is an info message")
3. `logging.warning`: 경고 메시지를 기록할 때 사용한다. 프로그램이 예상치 않은 동작이나 문제 상황에 진입했음을 나타낸다.
import logging
logging.warning("This is a warning message")
4. `logging.error`: 에러 메시지를 기록할 때 사용한다. 예외가 발생하거나 프로그램 실행 중 오류가 발생했음을 나타낸다.
import logging
logging.error("This is an error message")
5. `logging.critical`: 심각한 에러 메시지를 기록할 때 사용한다. 프로그램이 중단되거나 치명적인 오류가 발생했음을 나타낸다.
import logging
logging.critical("This is a critical message")
이외에도 `logging.exception`을 사용하여 예외 정보를 로그로 기록할 수 있다.
import logging
try:
# 예외가 발생할 수 있는 코드
raise ValueError("An error occurred")
except Exception as e:
logging.exception("Exception occurred")
또한, 로깅 메시지에 변수나 추가 정보를 포함시킬 수도 있다. 이를 위해 `%(variable)s`와 같은 포맷 지정자를 사용할 수 있다.
import logging
name = "John"
age = 30
logging.info("User: %(name)s, Age: %(age)d", {"name": name, "age": age})
이러한 방식으로 `logging` 모듈을 활용하여 다양한 상황에 맞게 로깅을 할 수 있다. 로깅 레벨, 포맷 지정, 추가 정보 등을 조정하여 로그 메시지를 유연하게 관리할 수 있다.
'Development > Python' 카테고리의 다른 글
[Python] scrapy 모듈 사용하여 크롤링하기 (0) | 2023.06.18 |
---|---|
[Python] base64 디코드 (0) | 2023.05.23 |
[Python] instaloader 라이브러리 (1) | 2023.05.08 |
[MySQL] 주별로 쿼리 조회 (0) | 2023.04.12 |
[Python] lxml 설치 (0) | 2023.03.06 |