Skip to content

Instantly share code, notes, and snippets.

@takazawa
Created November 29, 2020 03:42
Show Gist options
  • Save takazawa/f6ffecd4eab6dff9c727b938c0d07e43 to your computer and use it in GitHub Desktop.
Save takazawa/f6ffecd4eab6dff9c727b938c0d07e43 to your computer and use it in GitHub Desktop.
import pathlib
from logging import getLogger, StreamHandler, Formatter, FileHandler, DEBUG
class LoggerSetting:
output_dir_path: str = None
logger_dict = {}
@classmethod
def set_output_dir_path(cls, output_dir_path):
cls.output_dir_path = output_dir_path
@classmethod
def get_logger(cls,
modname,
sh_level=DEBUG,
fh_level=DEBUG,
log_format="%(asctime)s - %(filename)s - %(levelname)s - %(message)s"):
if modname in cls.logger_dict:
return cls.logger_dict[modname]
logger = getLogger(modname)
logger.setLevel(DEBUG)
sh = StreamHandler()
sh.setLevel(sh_level)
formatter = Formatter(log_format)
sh.setFormatter(formatter)
logger.addHandler(sh)
if cls.output_dir_path is not None:
fh = FileHandler(pathlib.Path(cls.output_dir_path) / "log.txt")
fh.setLevel(fh_level)
fh_formatter = Formatter(log_format)
fh.setFormatter(fh_formatter)
logger.addHandler(fh)
cls.logger_dict[modname] = logger
return logger
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment