Created
November 29, 2020 03:42
-
-
Save takazawa/f6ffecd4eab6dff9c727b938c0d07e43 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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