본문 바로가기
파이썬

파이썬 Python 로깅 구성 파일

by º기록 2020. 10. 19.
반응형

내 파이썬 프로젝트에 로그인을 구현하는 동안 몇 가지 문제가있는 것 같습니다.

단순히 다음 구성을 모방하려고합니다.


그러나 코드 내부에서이 작업을 수행하는 대신 구성 파일에 포함하고 싶습니다.

아래는 내 구성 파일입니다.

[loggers]
keys=root

[logger_root]
handlers=screen,file

[formatters]
keys=simple,complex

[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

[formatter_complex]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s

[handlers]
keys=file,screen

[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=complex
level=DEBUG
args=('logs/testSuite.log',)

[handler_screen]
class=StreamHandler
formatter=simple
level=INFO
args=(sys.stdout,)

문제는 화면 출력이 다음과 같다는 것입니다.
2010-12-14 11:39:04,066 - root - WARNING - 3
2010-12-14 11:39:04,066 - root - ERROR - 4
2010-12-14 11 : 39 : 04,066-루트-위험-5

내 파일이 출력되지만 위와 동일하게 보입니다 (추가 정보가 포함되어 있음). 그러나 디버그 및 정보 수준은 어느 쪽에도 출력되지 않습니다.

저는 Python 2.7에 있습니다.

다음은 실패를 보여주는 간단한 예입니다.

import os
import sys
import logging
import logging.config

sys.path.append(os.path.realpath("shared/"))
sys.path.append(os.path.realpath("tests/"))

class Main(object):

  @staticmethod
  def main():
    logging.config.fileConfig("logging.conf")
    logging.debug("1")
    logging.info("2")
    logging.warn("3")
    logging.error("4")
    logging.critical("5")

if __name__ == "__main__":
  Main.main()

 

해결 방법

 

핸들러에 대한 레벨을 설정했지만 로거는 설정하지 않은 것 같습니다. 로거의 수준은 처리기에 도달하기 전에 모든 메시지를 필터링하며 기본값은 WARNING 이상입니다 (보시다시피). 루트 로거의 수준을 NOTSET 로 설정하고 DEBUG (또는 기록하려는 가장 낮은 수준)로 설정하면 문제가 해결됩니다.

 

참조 페이지 https://stackoverflow.com/questions/4441842

 

 

반응형

댓글