python 에서 logging 라 이브 러 리 의 사용 총화
5680 단어 python로그 인 라 이브 러 리쓰다
최근 작업 의 필요 로 python 스 크 립 트 를 쓰 고 있 습 니 다.항상 print 를 사용 하여 정 보 를 인쇄 하 는 느낌 이 낮 기 때문에 틈 틈 이 python 의 logging 라 이브 러 리 를 연구 하여 우아 하 게 로 그 를 인쇄 하고 기록 합 니 다.다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 해 보 겠 습 니 다.
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 단계 로 그 를 출력 합 니 다.
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 This is debug message
2017-10-16 Mon 10:05:17 testlogging.py[line:26] INFO This is info message
2017-10-16 Mon 10:05:17 testlogging.py[line:27] WARNING This is warning message
%(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:
# 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 This is info message
root : WARNING This is warning message
파일 에서 인쇄:
2017-10-16 Mon 10:20:07 testlogging.py[line:46] DEBUG This is debug message
2017-10-16 Mon 10:20:07 testlogging.py[line:47] INFO This is info message
2017-10-16 Mon 10:20:07 testlogging.py[line:48] WARNING This is warning message
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
로그 형식
from logging.config import fileConfig
fileConfig('logger.conf')
logger=logging.getLogger('infoLogger')
logger.info('test1')
logger_error=logging.getLogger('warnhandler')
logger_error.warn('test5')
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.