Python 표준 라이브러리의 로깅 사용 예

WBOY
풀어 주다: 2022-09-05 17:42:31
앞으로
1778명이 탐색했습니다.

【관련 권장사항: Python3 동영상 튜토리얼

1. 로깅 소개

로깅은 Python 표준 라이브러리 중 일반적으로 사용되는 로깅 라이브러리로 로깅 모듈을 통해 다양한 형식으로 로그를 저장합니다. 실행 중인 로그를 출력하는 데 사용됩니다. 출력 로그 수준, 로그 저장 경로, 로그 파일 롤백 등을 설정할 수 있습니다.

2. 간단한 사용예

먼저 logger.py 파일을 생성합니다. 그 안에 있는 코드는 다음과 같습니다.

import logging
 
# 1.创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG
LOGGER = logging.getLogger('single info')
LOGGER.setLevel(logging.DEBUG)
 
# 2.创建一个handler,这个主要用于控制台输出日志,并且设定严重级别
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
 
# 3.创建handler的输出格式(formatter)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
 
# 4.将formatter添加到handler中
ch.setFormatter(formatter)
 
# 5.将handler添加到logger中
LOGGER.addHandler(ch)
로그인 후 복사

logger.py 파일과 동일한 디렉터리에 데모.py 파일을 생성합니다. 이전 내용을 참조하세요. Demo.py 파일에 logger 인스턴스를 생성했습니다. 코드는 다음과 같습니다.

from logger import LOGGER
 
LOGGER.debug("打印DEBUG级别的日志")
LOGGER.info("打印INFO级别的日志")
로그인 후 복사

demo.py 파일을 실행합니다. 콘솔의 입력 내용은 다음과 같습니다.

2022-09-03 17: 38:16,554 - 단일 정보 - DEBUG - DEBUG 수준 로그 인쇄
2022-09-03 17:38:16,555 - 단일 정보 - INFO - INFO 수준 로그 인쇄

3 로그 수준

기본적으로 로깅의 로그 수준은 WARNING이고 로그가 콘솔에 인쇄됩니다. 로그 수준 크기 간의 관계는 다음과 같습니다. CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET

import logging
 
LOGGER = logging.getLogger('single info')
 
LOGGER.error("打印ERROR级别日志")
LOGGER.warning("打印WARNING级别日志")
LOGGER.info("打印INFO级别日志")
로그인 후 복사

위 코드를 실행하면 출력 내용은 다음과 같습니다.

WARNING 수준 인쇄 log

INFO의 로그 레벨이 WARNING보다 작기 때문에 해당 로그가 출력되지 않는 것을 볼 수 있습니다

4. 인쇄 형식의 다양한 매개변수

%(asctime)s : 읽기 가능한 시간을 기록할 때 인간을 생성합니다. 기본적으로 '2022-09-03 17:28:38,073' 형식입니다(쉼표 뒤의 숫자는 시간의 밀리초 부분입니다)

%( name)s: 로거 인스턴스를 나타냅니다. 이름

%(levelname)s: 인쇄된 로그의 로그 수준

%(message)s: 로그의 내용을 나타냅니다.

5. 지정된 파일에 로그를 출력합니다.

위와 같이 변경합니다. logger.py 파일은 다음과 같이 수정됩니다.

import logging
 
# 1、创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG
LOGGER = logging.getLogger('single info')
LOGGER.setLevel(logging.DEBUG)
 
# 2、创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log',encoding="utf-8", mode="a")
fh.setLevel(logging.WARNING)
 
#3、定义handler的输出格式(formatter)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(lineno)d : %(message)s')
 
# 4、给handler添加formatter
fh.setFormatter(formatter)
 
# 5、给logger添加handler
LOGGER.addHandler(fh)
로그인 후 복사

demo.py 파일의 코드는 다음과 같습니다.

from logger import LOGGER
 
LOGGER.debug("打印DEBUG级别的日志")
LOGGER.error("打印ERROR级别的日志")
로그인 후 복사

demo.py 파일을 실행하면, test.log라는 파일이 프로젝트 파일의 루트 디렉터리 아래에 생성되고 파일 내용은 다음과 같습니다.

Print ERROR 레벨 로그

Print WARNING 레벨 로그

특별 참고 사항: 이후 중국어는 로그 파일에 출력되므로 로그 파일 지정 시 인코딩을 설정해야 합니다

6. 로그 롤백(파일 크기에 따라 롤링)

logger.py 파일만 수정: RotatingFileHandler 정의 , 최대 3개의 로그 파일을 백업하세요. 각 로그 파일은 최대 1K

import logging
from logging.handlers import RotatingFileHandler
 
# 1、创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG
LOGGER = logging.getLogger('single info')
LOGGER.setLevel(logging.DEBUG)
 
# 2、定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K
rHandler = RotatingFileHandler("log.txt",maxBytes = 1,backupCount = 3,encoding="utf-8", mode="a")
rHandler.setLevel(logging.WARNING)
 
#3、定义handler的输出格式(formatter)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(lineno)d : %(message)s')
 
# 4、给handler添加formatter
rHandler.setFormatter(formatter)
 
# 5、给logger添加handler
LOGGER.addHandler(rHandler)
로그인 후 복사

demo.py를 여러 번 실행한 후 프로젝트의 루트 디렉터리에 4개의 새 파일이 추가되는 것을 볼 수 있습니다:

log.txt는 현재 로그에 저장된 파일을 나타내고, log.txt.1, log.txt.2, log.txt.3은 로그 백업 파일을 나타냅니다.

7. 로그 롤백(시간에 따라 롤링)

logger.py 파일만 수정하세요. TimedRotatingFileHandler를 정의하고 최대 3개의 로그 파일을 백업하고 5초마다 로그 파일의 간격 지점으로 사용하세요.
import logging
from logging.handlers import TimedRotatingFileHandler
from statistics import mode
 
# 1、创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG
LOGGER = logging.getLogger('single info')
LOGGER.setLevel(logging.DEBUG)
 
# 2、定义一个TimedRotatingFileHandler,最多备份3个日志文件,每隔5秒作为一个日志文件的间隔点
rHandler =TimedRotatingFileHandler(filename="ds_update", when="S", interval=5, backupCount=3,encoding="UTF-8")
rHandler.setLevel(logging.WARNING)
 
# 3、定义handler的输出格式(formatter)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(lineno)d : %(message)s')
 
# 4、给handler添加formatter
rHandler.setFormatter(formatter)
 
# 5、给logger添加handler
LOGGER.addHandler(rHandler)
로그인 후 복사

여러 번 deco.py를 실행하면 프로젝트의 루트 디렉터리에 4개의 새 파일이 추가되는 것을 볼 수 있습니다.

ds_update는 현재 로그에 저장된 파일인 ds_update.2022-09-03_19를 나타냅니다. -24-50, ds_update.2022-09-03_19-24-45 및 ds_update.2022-09-03_19-24-36은 로그 백업 파일을 나타냅니다. 최근부터 최신 순으로 롤백됩니다.

【관련 추천:

Python3 비디오 튜토리얼

위 내용은 Python 표준 라이브러리의 로깅 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:jb51.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿