잔가지는 더 파이썬 로깅 패키지를 구축 할 수있는 초기 단계의 프로젝트입니다.
사용법 :
디스플레이 작업을합니다 :
>>> 수입 SYS; sys.stderr를 = sys.stdout
설치는 간단하다
당신의 main.py에서 :
>>> 수입 잔가지
>>> twiggy.quick_setup ()
메시지 로깅
>>> 잔가지 가져 오기에서 *
메인 인터페이스는 마법의 로그입니다 :
>>> #doctest 로그 : + 줄임표
<0X ...에서 twiggy.Logger.Logger 개체>
그것은 표준 레벨을 사용하여, 상자 밖으로 작동합니다 :
>>> log.debug ( '당신은 상관하지 않을 수 있습니다')
DEBUG : 당신은 상관하지 않을 수 있습니다
>>> log.error ( 'OMFG! 불에 바지!')
오류 : OMFG! 불에 바지!
그것은 새로운 스타일을 디폴트, 형식 문자열의 다양한 지원합니다
>>> log.info ( '난에 {0} 입고 내 {곳}', '바지', 어디에 = '다리')
정보 : 내 다리에 바지를 착용
이전 스타일 그래도 잘 작동합니다 :
>>> log.options (스타일 = '퍼센트'). 정보 ( '나는 % s을 (를) 좋아한다', "자전거")
정보 : 나는 자전거를 좋아하는
으로 템플릿을 수행합니다
>>> log.options (스타일 = '달러'). 정보 ( '$ 무엇 죽', 무엇을 = '자동차')
정보 : 자동차 죽일
당신은 당신의 로거 이름을 지정할 수 있습니다 :
>>>이 mylog = log.name ( '알프레도')
>>> mylog.debug ( '안녕하세요')
DEBUG : 알프레도 : 안녕하세요
그러나 이름은 객체 관계없는; 그것은 단지 인간의 사용이다 :
>>>이 mylog는 ( '알프레도') log.name입니다
그릇된
메시지 발광
이미 터 느슨하게 결합 :
>>> twiggy.emitters는 #doctest : + 줄임표
{ '*': <0X ...에서 twiggy.Emitter.Emitter 개체>}
당신은 이미 터에 min_level을 설정할 수 있습니다 :
>>> twiggy.emitters [ '*']. min_level = twiggy.Levels.INFO
>>> log.debug ( "도움말, 도움말 나는이 억제되고있어")
>>> log.info ( "나는 아직 확실히 죽은하지 않다")
정보 : 나는 아직 확실히 죽은 아니에요
당신은 정규 표현식에에, 또는 임의의 기능을 필터링 할 수 있습니다 :
>>> twiggy.emitters [ '*']. 필터 = ". * 바지. *"
>>> log.info ( "있어 내 {0}에", "바지")
정보 : 내 바지를 얻었다
>>> log.info ( "셔츠" "내 {0}에있어")
이제 모든 것을 다시 보자
>>> twiggy.emitters [ '*']. 필터 = TRUE
>>> twiggy.emitters [ '*']. min_level = twiggy.Levels.DEBUG
더 나은 출력
뉴 라인은 기본적으로 억제; 그는 당 메시지를 해제 할 수 있습니다 :
>>> log.info ( '사용자 NINPUT nannoys NUS')
정보 : 사용자 NINPUT nannoys NUS
( '우리가 ndeal ') .INFO >>> log.options (suppress_newlines = 거짓)
정보 : 우리
거래
예외가 접두어로 사용됩니다. 또한 exc_info 전달할 수 있습니다. 한 줄에 접어 접두사로 ' n을'을 사용하여
>>> 시도 :
... 1/0
... 제외 :
... log.trace ( '오류') ( '오 noes')를 #doctest 경고 :. + 생략
경고 : 오 noes
TRACE 역 추적 (가장 최근 통화 마지막) :
추적 파일 "
TRACE 1/0
TRACE ZeroDivisionError : 0으로 정수 나누기 또는 모듈
메소드 체인
나는이 체인 스타일을 많이 좋아합니다.
>>> log.name ( '베니토'). 정보 ( '안녕하세요')
정보 : 베니토 : 안녕하세요
그것은 쉽게 구조화 된 로깅을한다 :
>>> log.fields (경로 = 42) .INFO ( '산책을 간다')
정보 : 경로 = 42 : 산책을 간다
짧은 컷. 런타임 통계 수집을 위해 중대한.
>>> log.struct (경로 = 42, 돌고래 = '감사')
정보 : 돌고래 = 감사 : 경로 = 42 :
일부 웹 어플리케이션에 유용 할 수 바인딩 :
>>> per_request_log = log.fields (REQUEST_ID = '12345')
>>> per_request_log.fields (행 = 100, 사용자 = '프랭크'). 정보 ( '데이터베이스를 frobnicating')
정보 : REQUEST_ID = 12345 : 행 = 100 : 사용자 = 솔직한 : frobnicating 데이터베이스
>>> per_request_log.fields (바이트 = 5678) .INFO ( '튜브를 통해 페이지를 보내는')
정보 : 바이트 = 5678 : REQUEST_ID = 12345 : 튜브를 통해 페이지를 전송
체인 스타일은 굉장합니다 :
>>> log.name ( 'donjuan'). 필드 (바지 = '섹시'). 정보 ( "안녕하세요, {사람} 원하는 {} 무엇을?", 사람 = '여성', 무엇을 = '춤')
정보 : donjuan : 바지 = 섹시한 : 안녕하세요, 숙녀 춤 싶어?
동적!
인수 / 필드의 모든 기능을 호출하고 값은 각각 대체된다 :
>>> 가져 오기 운영 체제
>>> twiggy.lib 수입 thread_name에서
>>> thread_name ()
'MainThread'
+ 줄임표 ( "나는 스레드에있어 {0}", thread_name) #doctest .INFO >>> log.fields (PID = os.getpid)
정보 : PID = 1076 : 나는 스레드 MainThread에있어
이것은 우리가 멋진 물건을하자 부분적으로 결합 로거로 유용 할 수 있습니다 :
>>> 클래스 ThreadTracker (객체) :
... DEF __init __ (자기, OBJ) :
... 자기 .__ OBJ = OBJ
... # 부분적으로 결합 로거
... 자기는 = log.name ( "추적자")를 기록 .__. 필드 (obj_id = ID (OBJ), 실 = thread_name)
... 자기 .__ log.debug는 ( "추적 시작")
... 데프 __ __getattr (자기, ATTR) :
... 자기 .__ log.debug ( "액세스 {0}", ATTR)
... 반환 getattr (자기 .__ OBJ, ATTR)
...
>>> 클래스 무리 (객체) :
... 통과
...
>>> foo는 = 무리 ()
>>> foo.bar = (42)
>>> 추적 = ThreadTracker (foo는)
DEBUG : 추적자 : obj_id = 14063980 : 스레드 = MainThread은 : 추적 시작
>>> tracked.bar
DEBUG : 추적자 : obj_id = 14063980 : 스레드 = MainThread : 액세스 바
(42)
>>> 수입 스레딩
>>> T = threading.Thread (목표 = 람다 : tracked.bar * 2, 이름 = "TheDoubler")
>>> t.start ()
DEBUG : 추적자 : obj_id = 14063980 : 스레드 = TheDoubler : 액세스 바
당신은 정말 ()를 호출,에 repr 로그 또는 람다에 포장하십시오.
최적화
최적화 된 바와 같이, min_level는 로거에 설정할 수 있습니다 :
>>> mylog.min_level = twiggy.Levels.INFO
>>> mylog.info ( "당신은이 참조")
정보 : 알프레도 :이 참조
>>> mylog.debug는 ( "이 숨겨져")
또한 format_spec에서 작동하는 필터를 가지고. 유스 케이스 효율적으로 멍청한 짓을하고 도서관에서 특정 메시지를 차단한다 :
>>> mylog.filter = 람다의 "헛소리"하지의에
>>> mylog.info ( "어리 석음 시작")
정보 : 알프레도 : 시작 어리 석음
>>> xrange에서 I (3)에 대한 : 3의 큰 값 #
... mylog.info는 ( "나는 헛소리를 호출!")
>>> mylog.info ( "어리 석음을 종료합니다")
정보 : 알프레도 : 최종 어리 석음
요구 사항 :
파이썬
댓글을 찾을 수 없습니다