>

파이썬 logging 를 사용하려고합니다  도서관. 콘솔에서 메시지를 인쇄하는 대신 메시지를 파일에 쓰고 싶습니다. 문서 에 따르면, 저는 조금 이 작업을 수행하는 방법을 잘 모르겠습니다. 먼저 logging 를 가져 왔습니다  그런 다음 로깅 객체를 만들었습니다. 참고 : 나는 name 를 조금 확신하지 못한다  이 작업을 수행 할 때 이것이 전체 파일 경로를 가진 파일 이름이라고 가정합니까? 내가 방금 만든 임의의 이름?

foldname = "chk_logs"
logFileName = os.path.join(path.abspath(path.curdir),foldname + "\\Fields_Log_" + timeStamp + ".txt")             #logging
if os.path.isdir(foldname)==False:
    os.mkdir(foldname)
logFile = open(logFileName, "w")
format="%(asctime)s [%(levelname)s] %(message)s"
logging.basicConfig(fileName=logFile, format=format, level=10)
logger = logging.getLogger('name') 

그래서 logFile 에 메시지를 쓰고 싶다고 가정 해 봅시다.  내 logger 에서 .

  logger.debug("Test")

logFile.close() 를 사용한 후에도 본질적으로 아무것도하지 않습니다. . 시도하면 :

logFile.write(str(logger.debug("Test")))

기본적으로 .txt 에 '없음'이라고 씁니다.  파일. 이를 수행하는 간단한 방법이 있어야합니다. 내가 뭘 잘못하고 있니?

  • 답변 # 1

    파이썬 로깅에 항상 사용하는 상용구 코드는 다음과 같습니다. 이것은 Windows 용입니다. UNIX를 사용하는 경우 슬래시를 백 슬래시로 변경해야합니다

    import os
    import logging
    import datetime as dt
    import time
    LOG_FILE = os.getcwd() + "/logs"
    if not os.path.exists(LOG_FILE):
        os.makedirs(LOG_FILE)
    LOG_FILE = LOG_FILE + "/" + dt.datetime.fromtimestamp(time.time()).strftime('%Y_%m_%d %H_%M_%S') + ".log"
    logFormatter = logging.Formatter("%(levelname)s %(asctime)s %(processName)s %(message)s")
    fileHandler = logging.FileHandler("{0}".format(LOG_FILE))
    fileHandler.setFormatter(logFormatter)
    rootLogger = logging.getLogger()
    rootLogger.addHandler(fileHandler)
    rootLogger.setLevel(logging.INFO)
    logging.info("testing out the logging functionality")
    
    

    날짜 타임 스탬프가있는 로그 파일로 끝나야합니다

  • 이전 pandas - 파이썬을 사용하여 CSV 파일에서 하나의 열 데이터를 하나씩 행으로 읽는 방법
  • 다음 javascript - 선택한 버튼에 따라 특정 명령을 실행하도록 컨트롤러를 어떻게 설정합니까?