[Python] logging 모듈

2023. 5. 17. 10:41·Development/Python

파이썬 개발 시 로그를 확인하려는 경우, 로깅을 사용할 수 있다.

로깅(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
'Development/Python' 카테고리의 다른 글
  • [Python] scrapy 모듈 사용하여 크롤링하기
  • [Python] base64 디코드
  • [Python] instaloader 라이브러리
  • [MySQL] 주별로 쿼리 조회
곽진돔
곽진돔
Developer
  • 곽진돔
    echo "곽박한 세상";
    곽진돔
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Development (57)
        • Linux (13)
        • k8s (3)
        • Docker (5)
        • AWS (1)
        • PHP (35)
        • Python (21)
        • Java (1)
        • SpringBoot (4)
        • JavaScript (1)
        • React (8)
        • MySql (19)
        • MongoDB (1)
      • Daily (4)
      • Study (6)
        • TIL (1)
        • license (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 설정
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    date
    인코딩
    Linux
    Shell
    리눅스
    리액트
    SQL
    db
    스프링부트
    CentOS7
    정규표현식
    MySQL
    윈도우
    nodejs
    error
    IP
    JavaScript
    Java
    Python
    ssh
    docker
    크롤링
    springboot
    chromedriver
    UTF8
    php
    react
    CentOS
    Selenium
    HTML
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
곽진돔
[Python] logging 모듈
상단으로

티스토리툴바