많은 프로그램은 로그를 기록해야 하며, 로그에 포함된 정보에는 일반 프로그램 액세스 로그가 포함되며, Python의 로깅 모듈은 표준 로그 인터페이스를 제공합니다. 로그는 다양한 형식으로 저장됩니다. 디버그, 정보, 경고, 오류, 중요 등 5가지 수준으로 나눌 수 있습니다.
모듈 사용 방법을 살펴보겠습니다.
#logging初识 import logging logging.warning("user [James] attempted wrong password more than 3 times") logging.critical("server is down") # WARNING:root:user [James] attempted wrong password more than 3 times # CRITICAL:root:server is down
로그를 파일에 기록하려는 경우 방법도 매우 간단합니다.
#日志打印到文件中 import logging logging.basicConfig(filename="example.log",level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %H:%M:%S [%A]") # H 24小时格式 I 12小时格式 A 周几完整 a 周几简写 p AM/PM logging.debug("This message should go to the log file") logging.info("So should this") logging.warning("And this ,too")
10/31/2016 17:16:17 [Monday] So should this 10/31/2016 17:16:17 [Monday] And this ,too
로깅 라이브러리는 모듈식 접근 방식을 취하고 로거, 핸들러, 필터, 포맷터 등 여러 범주의 구성 요소를 제공합니다.로거는 애플리케이션 코드가 직접 사용하는 인터페이스를 노출합니다.핸들러는 전송합니다. 로그 레코드(로거에 의해 생성됨)를 적절한 대상으로 보냅니다.필터는 출력할 로그 레코드를 결정하기 위한 보다 세부적인 기능을 제공합니다.포맷은 최종 출력에서 로그 레코드의 레이아웃을 지정합니다. .
#!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian import logging #创建logger logger = logging.getLogger("test_log") #创建logger对象 括号内容随便写 logger.setLevel(logging.INFO) #全局日志级别 ch = logging.StreamHandler() #日志打印到屏幕上 ch.setLevel(logging.DEBUG) #指定ch日志打印级别 fh = logging.FileHandler("access.log") #日志存进文件 fh.setLevel(logging.WARNING) #指定fh日志输入级别 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") #定义日志格式,可写多个 #添加日志格式到ch,fh ch.setFormatter(formatter) fh.setFormatter(formatter) #添加ch,fh到logger中 logger.addHandler(ch) logger.addHandler(fh) logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message')
2016-10-31 17:23:42,988 - test_log - INFO - info message 2016-10-31 17:23:42,988 - test_log - WARNING - warn message 2016-10-31 17:23:42,988 - test_log - ERROR - error message 2016-10-31 17:23:42,988 - test_log - CRITICAL - critical message
2016-10-31 17:02:06,223 - test_log - WARNING - warn message 2016-10-31 17:02:06,224 - test_log - ERROR - error message 2016-10-31 17:02:06,224 - test_log - CRITICAL - critical message