본문 바로가기
Python 파이썬/logging

파이썬 로깅 포매터(Formatter)와 포맷가능한 LogRecord Attribute

by 하이방가루 2022. 2. 24.
728x90
반응형

포매터

logging.Formatter.__init__(fmt=None, datefmt=None, style='%')

3.2버전부터는 style 매개변수가 추가 되었다.

style은 '%', '{', '$' 중 하나를 쓸 수 있으며, 이 중 하나가 지정되지 않으면, '%'가 사용된다.

포맷가능한 LogRecord Attribute

파이썬으로 코딩하고 실행하여 속성별로 어떻게 표시되는지 알아보았다.

1줄 import logging
-중략-
21줄 # 포맷할 수 있는 LogRecord 어트리뷰트의 종류
22줄
23줄 LRAttr = ['%(asctime)s','%(created)f','%(filename)s','%(funcName)s','%(levelname)s','%(levelno)s','%(lineno)d','%(message)s','%(module)s','%(msecs)d','%(name)s','%(pathname)s','%(process)d','%(processName)s','%(relativeCreated)d','%(thread)d','%(threadName)s']
24줄
25줄 LRDesc = ['asctime-s-사람이 읽을 수 있는 LogRecord가 생성된 시간','created-f-LogRecord가 생성된 시간(숫자형시간)','filename-s-pathname의 파일명 부분','funcName-s-로깅 호출을 포함하는 함수의 이름','levelname-s-메시지의 텍스트 로깅 수준','levelno-s-메시지의 숫자 로깅 수준','lineno-d-로깅 호출이 일어난 소스행 번호','message-s-로그된 메시지','module-s-모듈(filename의 이름 부분)','msecs-d-LogRecord가 생성된 시간의 밀리초 부분','name-s-로깅호출에 사용된 로거의 이름','pathname-s-로깅호출이 일어난 소스파일의 전체 경로명','process-d-프로세스 ID','processName-s-프로세스  이름','relativeCreated-d-logging모듈이 로드된 시간을 기준으로 LogRecord가 생서된 시간(밀리초)','thread-d-스레드 ID','threadName-s-스레드 이름']
26줄
27줄  logger = logging.getLogger()
28줄  sh = logging.StreamHandler()
29줄  sh.setLevel(logging.DEBUG)
30줄  for i in range(len(LRAttr)):
31줄     lgfmt = logging.Formatter(fmt=LRAttr[i]+' : %(message)s')
32줄     sh.setFormatter(lgfmt)
33줄     logger.addHandler(sh)
34줄     logger.warning(LRDesc[i])
35줄     print()

다음과 같이 표시된다.

2022-02-24 15:57:21,392 : asctime-s-사람이 읽을 수 있는 LogRecord가 생성된 시간

1645685841.393682 : created-f-LogRecord가 생성된 시간

main.py : filename-s-pathname의 파일명 부분

<module> : funcName-s-로깅 호출을 포함하는 함수의 이름

WARNING : levelname-s-메시지의 텍스트 로깅 수준

30 : levelno-s-메시지의 숫자 로깅 수준

35 : lineno-d-로깅 호출이 일어난 소스행 번호

message-s-로그된 메시지 : message-s-로그된 메시지

main : module-s-모듈(filename의 이름 부분)

400 : msecs-d-LogRecord가 생성된 시간의 밀리초 부분

root : name-s-로깅호출에 사용된 로거의 이름

c:/Users/suo24/Desktop/Projects/Python/logging Test/main.py : pathname-s-로깅호출이 일어난 소스파일의 전체 경로명

9924 : process-d-프로세스 ID

MainProcess : processName-s-프로세스 이름

14 : relativeCreated-d-logging모듈이 로드된 시간을 기준으로 LogRecord가 생서된 시간(밀리초)

12480 : thread-d-스레드 ID

MainThread : threadName-s-스레드 이름

날짜/시간의 포맷을 좀 더 제어해야 하는 경우, datefmt 인자를 제공해서 제어할 수 있다.

import logging

logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
logging.warning('is when this event was logged.')

다음과 같이 표시된다.

12/12/2010 11:46:36 AM is when this event was logged.

기본 날짜 형식은 다음과 같다.

%Y-%m-%d %H:%M:%S
끝에 밀리 초가 기록된다.

 

728x90
반응형

'Python 파이썬 > logging' 카테고리의 다른 글

로깅 구성 파일을 만들어 로깅 구성하기  (0) 2022.02.24
유용한 처리기  (0) 2022.02.24

댓글