2017-09-28 2 views
0

로봇 프레임 워크에서 실행되고 Test.py이 라이브러리로 가져오고 testLog()이 실행되고 Logger.py을 가져오고 LogMessage()을 호출합니다.Python에서 FileHandler를 사용하여 로그가 여러 번 인쇄됩니다.

Test.py

import Logger 
def testLog(): 
    Logger.LogMessage("This is the first line of the log file.") 
    Logger.LogMessage("This is the second line of the log file.") 
    Logger.LogMessage("This is the third line of the log file.") 

RIDE의 메시지 로그 단원에서는 실행 중에 한 번만 각 라인을 기록

This is the first line of the log file. 
This is the second line of the log file. 
This is the second line of the log file. 
This is the third line of the log file. 
This is the third line of the log file. 
This is the third line of the log file. 

Logger.py

import logging 
def LogMessage(message): 
    LOG_FILENAME = "C://Log_Details".log" 
    logger = logging.getLogger()  
    logFileHandler = logging.FileHandler(LOG_FILENAME) 
    logger.addHandler(logFileHandler) 

Log_Details.log하지만, 파일 이름이 Log_details.log이면 여러 번 인쇄됩니다. 즉, 첫 번째 줄은 두 번째는 두 번 기록됩니다.

답변

1

LogMessage 함수의 일부로 로깅 설정을 수행하고 메시지를 기록 할 때마다 파일 로그 처리기를 추가하기 때문에 1x 메시지 1, 2x 메시지 2 및 3x 메시지 3이 발생합니다. 첫 번째 실행 후 메시지를 한 번 기록한 핸들러가 두 번째 호출 후에 두 번 메시지를 기록하는 두 핸들러가있는 경우 ...

로거를 한 번만 구성하려는 경우를 방지하려면 다음과 같이하십시오. 그냥 당신이 당신의 스크립트와 다음에서 그냥 사용할 수 있습니다에 시작할 때 한 번 호출 함수에 대한 로깅 설정을 이동 :

import logging 
log = logging.getLogger(__name__) 
log.info('smth') 

당신이 당신의 응용 프로그램에서 다른 파일에 로그인 할 때마다 기분

.