diff --git a/src/room_control/console.py b/src/room_control/console.py index 630375e..b7bf3be 100644 --- a/src/room_control/console.py +++ b/src/room_control/console.py @@ -79,18 +79,11 @@ def load_rich_config( return adapter -RICH_HANDLER_CFG = { - '()': 'rich.logging.RichHandler', - 'markup': True, - 'show_path': False, - # 'show_time': False, - 'omit_repeated_times': False, - 'console': console, - 'highlighter': RCHighlighter(), -} - - class ContextSettingFilter(logging.Filter, ABC): + """Adds all the dataclass fields as attributes to LogRecord objects. + + Intended to be inherited from by something that uses the dataclasses.dataclass decorator. + """ def filter(self, record: logging.LogRecord) -> logging.LogRecord: for name, val in asdict(self).items(): if val is not None: @@ -98,12 +91,6 @@ class ContextSettingFilter(logging.Filter, ABC): return record -# @dataclass -# class RoomControllerFilter(ContextSettingFilter): -# room: str -# component: Optional[str] = None - - class RoomFilter(logging.Filter): """Used to filter out messages that have a component field because they will have already been printed by their respective logger.""" @@ -111,11 +98,6 @@ class RoomFilter(logging.Filter): return not hasattr(record, 'component') -# class RoomControllerFormatter(logging.Formatter): -# def format(self, record: logging.LogRecord): -# return super().format(record) - - class UnMarkupFilter(logging.Filter): md_regex = re.compile(r'(?P\[.*?\])(?P.*?)(?P\[\/\])') @@ -129,6 +111,17 @@ class JSONFormatter(logging.Formatter): return json.dumps(record.__dict__) +RICH_HANDLER_CFG = { + '()': 'rich.logging.RichHandler', + 'markup': True, + 'show_path': False, + # 'show_time': False, + 'omit_repeated_times': False, + 'console': console, + 'highlighter': RCHighlighter(), +} + +## currently unused def room_logging_config(name: str): return { 'version': 1, @@ -186,52 +179,3 @@ def room_logging_config(name: str): }, }, } - - -# def component_logging_config(parent_room: str, component: str): -# logger_name = f'AppDaemon.{parent_room}.{component}' - -# cfg = load_rich_config() - -# LOG_CFG = { -# 'version': 1, -# 'disable_existing_loggers': False, -# 'formatters': { -# 'rich_component': { -# 'style': '{', -# 'format': '[room]{room}[/] [component]{component}[/] {message}', -# 'datefmt': '%H:%M:%S.%f', -# }, -# }, -# 'handlers': { -# 'rich_component': { -# 'formatter': 'rich_component', -# **RICH_HANDLER_CFG, -# }, -# }, -# 'loggers': { -# logger_name: { -# # 'level': 'INFO', -# 'propagate': True, -# 'handlers': ['rich_component'], -# } -# }, -# } -# return LOG_CFG - - -# def setup_component_logging(self) -> logging.Logger: -# """Creates a logger for a subcomponent with a RichHandler""" -# component = type(self).__name__ -# parent = self.args['app'] -# cfg_dict = component_logging_config(parent_room=parent, component=component) -# logger_name = next(iter(cfg_dict['loggers'])) - -# try: -# logging.config.dictConfig(cfg_dict) -# except Exception: -# console.print_exception() -# else: -# logger = logging.getLogger(logger_name) -# logger = logging.LoggerAdapter(logger, {'room': parent, 'component': component}) -# return logger