2012-08-27 8 views
3

로그 파일의 모든 타임 스탬프를 UTC 타임 스탬프로 사용하고 싶습니다.파이썬 로깅 : 설정 파일에서 로그 포맷터의 변환기 속성 지정

import logging 
import time 

myHandler = logging.FileHandler('mylogfile.log', 'a') 
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(name)-15s:%(lineno)4s: %(message)-80s') 
formatter.converter = time.gmtime 

myHandler.setFormatter(formatter) 

myLogger = logging.getLogger('MyApp') 
myLogger.addHandler(myHandler) 

myLogger.setLevel(logging.DEBUG) 
myLogger.info('here we are') 

내가 config 파일 기반 메커니즘에 멀리 '에서 코드'위의 구성에서 이동 싶습니다 코드를 지정하면 다음이 수행됩니다.

이제
[handler_MyLogHandler] 
args=("mylogfile.log", "a",) 
class=FileHandler 
level=DEBUG 
formatter=simpleFormatter 

, 어떻게 위의 절에서 컨버터 속성 (time.gmtime)을 지정합니까 :

여기 포맷의 설정 파일 섹션입니까?

편집 : 상기 구성 파일 따라서로드 :

logging.config.fileConfig('myLogConfig.conf') 
+0

설정 파일 있음을 구문 분석 무엇입니까? 분명히이 질문에서 빠진 것이 있습니다. –

+0

Thomas를 지적 해 주셔서 감사합니다. qn에 세부 정보를 추가했습니다. – sradhakrishna

+0

코드 예제가 실제로 실행되고 기록되도록 업데이트했습니다. 항상 전체 코드 샘플을 제공하십시오. –

답변

3

안타깝게도 구성 파일을 사용하여이를 수행하는 방법은, 예를 들어 다른 것보다 없다

class UTCFormatter(logging.Formatter): 
    converter = time.gmtime 

하고 구성에서 UTCFormatter을 사용. 여기

0

인 Vinay의 솔루션은 logging.basicConfig에 적용 :

import logging 
import time 

logging.basicConfig(filename='junk.log', level=logging.DEBUG, format='%(asctime)s: %(levelname)s:%(message)s') 
logging.Formatter.converter = time.gmtime 
logging.info('A message.')