언어/Python

Python Logger 사용

darkdevilness 2021. 1. 19. 09:53
728x90

아래 코드는 제가 프로그램 작성할 때사용하는 logger 함수 입니다.

import configparser

def create_custom_logger(logger_name, **kwargs):
  level = kwargs.get("level", "NOTSET")
  logfile = kwargs.get("logfile", __name__)
  f_record = kwargs.get("f_record", False)
  logfile = os.path.normpath(f"log/{logfile}.log")

  """ Create module logger """
  level = {"CRITICAL": logging.CRITICAL, "ERROR": logging.ERROR, "WARNING": logging.WARNING, "INFO": logging.INFO,
  "DEBUG": logging.DEBUG, "NOTSET": logging.NOTSET}[level.upper()]

  mLogger = logging.getLogger(logger_name)
  mLogger.setLevel(level)
  mLogger.propagate = 0

  stream_formatter = logging.Formatter('%(levelname)s - %(message)s')
  stream_hander = logging.StreamHandler()
  stream_hander.setFormatter(stream_formatter)
  mLogger.addHandler(stream_hander)

  if f_record:
    os.makedirs(os.path.dirname(logfile), exist_ok=True)
    file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    file_handler = logging.FileHandler(logfile)
    file_handler.setFormatter(file_formatter)
    mLogger.addHandler(file_handler)

  mLogger.setLevel(level)
  mLogger.propagate = 0

  return mLogger

mLog = create_custom_logger("mylogger", level="info", f_record=True)


mLog.info(f"필요한 곳에 넣으면 됩니다.")

728x90