Demo / src /models /utils /logging.py
nguyenminh4099's picture
Upload folder using huggingface_hub
9411c06 verified
import logging
import sys
from typing import Union
def get_logger(
name: str = None,
level: Union[int, str] = None,
log_path: str = None,
is_stream: bool = False,
format: str = None,
*args,
**kwargs,
) -> logging.Logger:
"""
Get logger to keep logs the flow
name:
Name of logger
level:
Level of logger
log_path:
File contains logs
is_stream:
Log to console
format:
Format of message
Return:
logger
"""
# refix name for logger
if name is None:
name = 'no_name'
if level is None:
level = logging.DEBUG
elif isinstance(level, str):
level = logging._nameToLevel.get(level, logging.DEBUG)
# create logger
logger = logging.getLogger(name=name)
logger.setLevel(level=level)
# create formatter
if format is None:
format = """%(asctime)s | %(name)s | %(levelname)s
"%(filename)s", module %(module)s, line %(lineno)d in <%(funcName)s>
--> %(message)s\
"""
formater = logging.Formatter(fmt=format, datefmt="%m/%d/%Y, %H:%M:%S")
# check present of handlers
if not logger.handlers:
# create stream handler if
if is_stream:
s_handler = logging.StreamHandler(stream=sys.stdout)
s_handler.setLevel(level=level)
s_handler.setFormatter(fmt=formater)
logger.addHandler(hdlr=s_handler)
# create file handler if
if log_path is not None:
f_handler = logging.FileHandler(
filename=log_path,
mode='a',
encoding='utf-8',
)
f_handler.setLevel(level=level)
f_handler.setFormatter(fmt=formater)
logger.addHandler(hdlr=f_handler)
return logger