> 백엔드 개발 > 파이썬 튜토리얼 > Python의 로깅 라이브러리 사용 요약

Python의 로깅 라이브러리 사용 요약

黄舟
풀어 주다: 2017-10-18 11:02:11
원래의
1742명이 탐색했습니다.

Python의 로깅 모듈은 타사 모듈이나 응용 프로그램에서 사용할 수 있는 일반적인 로깅 시스템을 제공합니다. 다음 기사에서는 주로 Python에서 로깅 라이브러리 사용에 대한 몇 가지 지식 요약을 소개합니다. , 도움이 필요한 친구들이 참고할 수 있습니다. 아래를 살펴보겠습니다.

머리말

최근 작업상의 문제로 Python 스크립트를 작성하고 있는데 항상 print to print 정보를 사용하는 것이 매우 낮은 느낌이어서 python의 로깅 라이브러리에 대해 공부하는 시간을 가졌습니다. 그리고 로그를 우아하게 기록해 보세요. 아래에서는 별로 설명할 것이 없지만, 자세한 소개를 살펴보겠습니다.

1. 간단히 로그를 화면에 인쇄하세요:


import logging

logging.debug('This is debug message')  #debug
logging.info('This is info message')   #info
logging.warning('This is warning message') #warn
로그인 후 복사

화면에 인쇄: WARNING:root:This is warning message

기본적으로 WARNING 수준 로그가 인쇄됩니다.

  • DEBUG: 자세한 정보, 디버깅 정보.

  • INFO: 모든 것이 예상대로 작동하는지 확인하세요.

  • 경고: 예상치 못한 일이 발생했거나 가까운 시일 내에 문제가 발생할 것임을 나타냅니다(예: '디스크 가득 참'). 소프트웨어는 여전히 정상적으로 작동하고 있습니다.

  • 오류: 더 심각한 문제로 인해 소프트웨어가 더 이상 일부 기능을 수행할 수 없습니다.

  • 중요: 소프트웨어를 더 이상 실행할 수 없음을 나타내는 심각한 오류입니다.

2. basicConfig 함수를 통해 로그 입력 형식 및 방법을 구성합니다.


import logging

logging.basicConfig(level=logging.DEBUG,
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    datefmt='%Y-%m-%d %a %H:%M:%S',
    filename='test.log',
    filemode='w')
 
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
로그인 후 복사

위 코드는 로그를 화면에 출력하지 않고 현재 디렉터리에 test.log를 생성합니다. . 로그 파일, 로그는 로그 파일에 인쇄됩니다.

2017-10-16 Mon 10:05:17 testlogging.py[line:25] DEBUG 디버그 메시지입니다

2017-10-16 Mon 10: 05:17 testlogging.py[line:26] INFO 정보 메시지입니다

2017-10-16 Mon 10:05:17 testlogging.py[line:27] WARNING 경고 메시지입니다

  • logging .basicConfig 함수의 매개변수:

  • filename: 로그 파일 이름 지정

  • filemode: 파일 함수와 동일한 의미, 로그 파일의 열기 모드 'w' 또는 'a' 지정

  • format: 출력 형식과 내용을 지정합니다. format은 위의 예와 같이 많은 유용한 정보를 출력할 수 있습니다.


 %(levelno)s: 打印日志级别的数值
 %(levelname)s: 打印日志级别名称
 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
 %(filename)s: 打印当前执行程序名
 %(funcName)s: 打印日志的当前函数
 %(lineno)d: 打印日志的当前行号
 %(asctime)s: 打印日志的时间
 %(thread)d: 打印线程ID
 %(threadName)s: 打印线程名称
 %(process)d: 打印进程ID
 %(message)s: 打印日志信息
로그인 후 복사
  • datefmt: time.strftime과 동일하게 시간 형식을 지정합니다. ()

  • level: 로그 수준을 설정합니다. 기본값은 로깅입니다. WARNING

  • stream: 로그의 출력 스트림을 지정합니다. sys.stderr, sys.stdout 또는 파일로 지정할 수 있습니다. 기본 출력은 sys.stderr입니다. 스트림과 파일 이름을 동시에 지정하면 스트림이 무시됩니다

3 로그와 로그 파일을 동시에 출력합니다


#定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
로그인 후 복사

화면에 로그를 동시에 출력하려면 위의 코드를 삽입하세요

화면에 인쇄:

root : INFO 정보 메시지입니다

root : WARNING 경고 메시지입니다

파일로 인쇄:

2017-10-16 Mon 10:20:07 testlogging.py[line:46] DEBUG 디버그 메시지입니다

2017 -10-16 Mon 10:20:07 testlogging.py[line :47] INFO 정보 메시지입니다

2017-10-16 Mon 10:20:07 testlogging.py[line:48] WARNING 경고 메시지입니다

4. 구성 파일을 통해 로그를 구성합니다

.


#logger.conf
[loggers]
#定义logger模块,root是父类,必需存在的,其它的是自定义。 
keys=root,infoLogger,warnlogger

[logger_root] 
level=DEBUG       #level  级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL
handlers=infohandler,warnhandler #handlers 处理类,可以有多个,用逗号分开

[logger_infoLogger]     #[logger_xxxx] logger_模块名称
handlers=infohandler
qualname=infoLogger     #qualname logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。
propagate=0       #propagate 是否继承父类的log信息,0:否 1:是

[logger_warnlogger]
handlers=warnhandler
qualname=warnlogger
propagate=0

###############################################
#定义handler
[handlers]
keys=infohandler,warnhandler

[handler_infohandler]
class=StreamHandler     #class handler类名
level=INFO       #level 日志级别
formatter=form02      #formatter,下面定义的formatter
args=(sys.stdout,)     #args handler初始化函数参数

[handler_warnhandler]
class=FileHandler
level=WARN
formatter=form01
args=('logs/deploylog.log', 'a')

###############################################
# 定义格式化输出
[formatters]
keys=form01,form02

[formatter_form01]
format=%(message)s %(asctime)s
datefmt=%Y-%m-%d %H:%M:%S

[formatter_form02]
format=%(asctime)s %(levelname)s %(message)s
datefmt=%Y-%m-%d %H:%M:%S
로그인 후 복사

로그 형식

  • %(asctime)s 년-월-일 시-분-초, 밀리초 2013-04-26 20 :10:43,745

  • %(filename)s 파일 이름 , 디렉토리 제외

  • %(pathname)s 디렉토리 이름, 전체 경로

  • %(funcName)%(funcName)s 함수 이름

  • %( levelname)s 레벨 이름

  • %(lineno)d 줄 번호

  • %(module)s 모듈 이름

  • %(message)s 메시지 본문

  • %(name)s 로그 모듈 이름

  • %(process)d 프로세스 ID

  • % (ProcessName) S 프로세스 이름

  • %(스레드) D 스레드 ID id al%(ThreadName) S 스레드 이름 테스트 구성 파일

  • from logging.config import fileConfig
    
    fileConfig('logger.conf')
    logger=logging.getLogger('infoLogger')
    logger.info('test1')
    logger_error=logging.getLogger('warnhandler')
    logger_error.warn('test5')
    로그인 후 복사
    summary

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

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