韩宇
init
1b7e88c
raw
history blame
2.32 kB
import inspect
import logging as _logging
import logging.handlers as handlers
import os
from distutils.util import strtobool
from omagent_core.utils.container import container
class Logger(_logging.Logger):
def __init__(self):
pass
def init_logger(
self,
name,
log_name,
level=None,
roate="midnight",
backup_count=30,
):
"""
:param name: Name of the logger.
:param log_name: Name of the log file.
:param log_dir: The directory to save log files.
:param level: Log level: The lowest level of log.
:param Rotate: How to rotate log files.
:param backup_count: How many log files to keep.
"""
if level is None:
level = (
_logging.DEBUG if container.conductor_config.debug else _logging.INFO
)
super().__init__(name, level)
formatter = _logging.Formatter(
"%(levelname)s | %(asctime)s | %(pathname)s:%(lineno)d | %(funcName)s | %(message)s"
)
if not self.handlers:
console_handler = _logging.StreamHandler()
self.addHandler(console_handler)
console_handler.setFormatter(formatter)
def _log_with_caller_info(self, level, msg, *args, **kwargs):
if self.isEnabledFor(level):
frame = inspect.currentframe()
outer_frames = inspect.getouterframes(frame)
if len(outer_frames) > 3:
calling_frame = outer_frames[3].frame
self.findCaller = lambda *args: (
calling_frame.f_code.co_filename,
calling_frame.f_lineno,
calling_frame.f_code.co_name,
None,
)
self._log(level, msg, args, **kwargs)
# Reset the findCaller to default after logging
self.findCaller = _logging.Logger.findCaller
def debug(self, msg, *args, **kwargs):
self._log_with_caller_info(_logging.DEBUG, msg, *args, **kwargs)
def info(self, msg, *args, **kwargs):
self._log_with_caller_info(_logging.INFO, msg, *args, **kwargs)
def error(self, msg, *args, **kwargs):
self._log_with_caller_info(_logging.ERROR, msg, *args, **kwargs)
logging = Logger()