2017-01-20 9 views
3

파이썬 logging 시스템을 사용하는 일부 코드를 작성하고 있습니다. 그 아이디어는 LOG이 아직 존재하지 않는다면 로그를 만들지 만 로그를 얻으면 그 파일에 로깅을 다시 시작한다는 것입니다. 나는 문제가 내 else 블록을 의심하지만 난 해결하는 방법을 모르는파이썬 로깅 : 존재하지 않는 경우 로그를 작성하거나 로깅을 계속 진행하십시오.

import logging 
import os 

log_filename='Transactions.log') 
if os.path.isfile(log_filename)!=True: 
    LOG = logging.getLogger('log_filename') 
    LOG.setLevel(logging.DEBUG) 
    # create file handler which logs even debug messages 
    fh = logging.FileHandler('log_filename') 
    fh.setLevel(logging.DEBUG) 
    # create console handler with a higher log level 
    ch = logging.StreamHandler() 
    ch.setLevel(logging.DEBUG) 
    # create formatter and add it to the handlers 
    formatter = logging.Formatter('-->%(asctime)s - %(name)s:%(levelname)s - %(message)s') 
    fh.setFormatter(formatter) 
    ch.setFormatter(formatter) 
    # add the handlers to the logger 
    LOG.addHandler(fh) 
    LOG.addHandler(ch) 
else: 
    LOG=logging.getLogger() 

: 여기 내 코드입니다. 아무도이 상황에 대해 밝힐 수 없었을까요?

+0

로거를 한 번 설정 한 다음 원하는 위치에서'LOG'를 가져 오면 로그 파일이 있는지 확인할 필요가 없습니다 – mic4ael

답변

3

로깅 모듈의 FileHandler이 처리합니다. 복잡성에 대한 필요가 없습니다.

처리기는 선택적인 mode 매개 변수를 사용하여 데이터 쓰기 또는 데이터 추가를 지정합니다. the docs 가입일

:

class logging.FileHandler(filename, mode='a', encoding=None, delay=False)

지정된 파일이 열리고 로깅 스트림으로서 사용된다. mode을 지정하지 않으면 'a'이 사용됩니다.