3_optimization-design-ptn/03_prompt-optimization/promptwizard/glue/common/utils/logging.py (30 lines of code) (raw):
import logging
from os import makedirs
from os.path import join
from logging.handlers import TimedRotatingFileHandler
from ..constants.str_literals import FileConstants
logging_handlers_list = []
def set_logging_config(log_dirpath: str, mode: str = "offline") -> None:
"""
This logger should be used when we are running online production scenario
:param log_dirpath: Path to directory where logg files should be saved.
:param mode: Specifies whether the mode is `online or `offline`
:return:
"""
global logging_handlers_list
makedirs(log_dirpath, exist_ok=True)
logging.basicConfig(filename=join(log_dirpath, FileConstants.logfile_name),
filemode='a',
format=u"%(asctime)s.%(msecs)03d | %(name)-12s | %(funcName)s:\n%(message)s\n",
datefmt='%Y-%m-%d,%H:%M:%S',
level=logging.NOTSET,
force=True,
encoding="utf-8")
if mode == "online":
daily_split_handler = TimedRotatingFileHandler(FileConstants.logfile_prefix, when="midnight", backupCount=30, encoding="utf-8")
daily_split_handler.suffix = "%Y%m%d"
logging_handlers_list = [daily_split_handler]
else:
console = logging.StreamHandler()
console.setLevel(logging.NOTSET)
logging_handlers_list = [console]
def get_glue_logger(module_name: str) -> logging.Logger:
"""
Method to get common logger object for module.
:param module_name: Name of the module.
:return: Logger object, which can be used for logging
"""
global logging_handlers_list
logger = logging.getLogger(module_name)
for handler in logging_handlers_list:
logger.addHandler(handler)
# TODO: Add handler to log to app insights if Azure connection is ON
return logger