【관련 권장사항: Python3 동영상 튜토리얼】
로깅은 Python 표준 라이브러리 중 일반적으로 사용되는 로깅 라이브러리로 로깅 모듈을 통해 다양한 형식으로 로그를 저장합니다. 실행 중인 로그를 출력하는 데 사용됩니다. 출력 로그 수준, 로그 저장 경로, 로그 파일 롤백 등을 설정할 수 있습니다.
먼저 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 수준 로그 인쇄
기본적으로 로깅의 로그 수준은 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보다 작기 때문에 해당 로그가 출력되지 않는 것을 볼 수 있습니다
%(asctime)s : 읽기 가능한 시간을 기록할 때 인간을 생성합니다. 기본적으로 '2022-09-03 17:28:38,073' 형식입니다(쉼표 뒤의 숫자는 시간의 밀리초 부분입니다)
%( name)s: 로거 인스턴스를 나타냅니다. 이름
%(levelname)s: 인쇄된 로그의 로그 수준
%(message)s: 로그의 내용을 나타냅니다.
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)
from logger import LOGGER LOGGER.debug("打印DEBUG级别的日志") LOGGER.error("打印ERROR级别的日志")
Print ERROR 레벨 로그Print WARNING 레벨 로그
특별 참고 사항: 이후 중국어는 로그 파일에 출력되므로 로그 파일 지정 시 인코딩을 설정해야 합니다
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)
log.txt는 현재 로그에 저장된 파일을 나타내고, log.txt.1, log.txt.2, log.txt.3은 로그 백업 파일을 나타냅니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!