2017-12-23 4 views
0

파이썬 코드에 로깅을 추가하고 있습니다. 메시지는 파일에 올바르게 기록되지만 이미 기록 된 항목을 파일에 다시 기록하는 것과 같은 중복 메시지를 기록합니다. 파이썬 로깅이 중복 된 항목을 추가합니다.

내 코드입니다 :

import logging 

logger = logging.getLogger('Sample') 
logger.setLevel(logging.DEBUG) 

formatter =logging.Formatter('%(message)s') 

handler=logging.FileHandler('./sample.log') 

handler.setFormatter(formatter) 

logger.addHandler(handler) 


def add(x, y): 
    return x + y 

num_1=10 
num_2=5 
add_result=add(num_1,num_2) 
logger.debug("Result: %s "%add_result) 

출력 :

1 실행 : 단일 출력

2 실행 : 3 개의 출력

3 실행 : 여섯 출력

+0

아마도 "로그 첨부 자"입니까? 로깅 문서를 살펴보십시오. 각 로깅이 파일을 재생성하지 않는다면별로 의미가 없습니다. 특히 prog가 매 3 분마다 실행되면 ... 로그 파일의 유일한 출력은 lasts가 실행되는 것입니다 ... –

+0

재현 할 수 없습니다. 이 스크립트를 사용하면 모든 실행이 로그에 정확하게 하나의 행을 추가합니다. 질문에 반영되지 않은 다른 일이 있어야합니다. – Mureinik

답변

1

스크립트를 파일 test_log.py에 저장 한 다음 터미널에서 python test_log.py을 실행하여 스크립트를 시작하십시오. 이렇게하면 각 실행에서 항상 단일 로그 메시지를 sample.log에 추가해야합니다.

대화 형 파이썬 셸에서 코드를 여러 번 실행 한 것 같습니다. logger.addHandler(handler) 줄은 logger 개체에 항상 새로운 로깅 처리기를 추가하므로 코드를 두 번 실행하면 실제로 두 개의 로깅 처리기가 모두 sample.log -> 중복 항목으로 기록됩니다.

또한 formatterformatter = logging.Formatter('%(asctime)-15s %(message)s')으로 변경하십시오. 로그 메시지 (형식 year-month-day hour:minutes:seconds,milliseconds)에 타임 스탬프를 추가하여 코드를 더 잘 디버깅 할 수 있습니다.

+0

감사합니다. 내 코드가 대화 형 모드로 실행되고있었습니다. 그것은 작동합니다. – KMG

관련 문제