Merge pull request #210 from tiqi-group/logging/updates_handlers

Feat: Updates logging handlers
This commit is contained in:
Mose Müller 2025-02-28 15:57:06 +01:00 committed by GitHub
commit 1fbcbc72bf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 44 additions and 5 deletions

View File

@ -202,7 +202,7 @@ def setup_sio_events(sio: socketio.AsyncServer, state_manager: StateManager) ->
@sio.event @sio.event
async def trigger_method(sid: str, data: TriggerMethodDict) -> Any: async def trigger_method(sid: str, data: TriggerMethodDict) -> Any:
async with sio.session(sid) as session: async with sio.session(sid) as session:
logger.debug( logger.info(
"Client [%s] is triggering the method '%s'", "Client [%s] is triggering the method '%s'",
session["client_id"], session["client_id"],
data["access_path"], data["access_path"],

View File

@ -29,22 +29,44 @@ LOGGING_CONFIG = {
"datefmt": "%Y-%m-%d %H:%M:%S", "datefmt": "%Y-%m-%d %H:%M:%S",
}, },
}, },
"filters": {
"only_pydase_server": {
"()": "pydase.utils.logging.NameFilter",
"match": "pydase.server",
},
"exclude_pydase_server": {
"()": "pydase.utils.logging.NameFilter",
"match": "pydase.server",
"invert": True,
},
},
"handlers": { "handlers": {
"default": { "stdout_handler": {
"formatter": "default", "formatter": "default",
"class": "logging.StreamHandler", "class": "logging.StreamHandler",
"stream": "ext://sys.stdout", "stream": "ext://sys.stdout",
"filters": ["only_pydase_server"],
},
"stderr_handler": {
"formatter": "default",
"class": "logging.StreamHandler",
"stream": "ext://sys.stderr",
"filters": ["exclude_pydase_server"],
}, },
}, },
"loggers": { "loggers": {
"pydase": {"handlers": ["default"], "level": LOG_LEVEL, "propagate": False}, "pydase": {
"handlers": ["stdout_handler", "stderr_handler"],
"level": LOG_LEVEL,
"propagate": False,
},
"aiohttp_middlewares": { "aiohttp_middlewares": {
"handlers": ["default"], "handlers": ["stderr_handler"],
"level": logging.WARNING, "level": logging.WARNING,
"propagate": False, "propagate": False,
}, },
"aiohttp": { "aiohttp": {
"handlers": ["default"], "handlers": ["stderr_handler"],
"level": logging.INFO, "level": logging.INFO,
"propagate": False, "propagate": False,
}, },
@ -52,6 +74,23 @@ LOGGING_CONFIG = {
} }
class NameFilter(logging.Filter):
"""
Logging filter that allows filtering logs based on the logger name.
Can either include or exclude a specific logger.
"""
def __init__(self, match: str, invert: bool = False):
super().__init__()
self.match = match
self.invert = invert
def filter(self, record: logging.LogRecord) -> bool:
if self.invert:
return not record.name.startswith(self.match)
return record.name.startswith(self.match)
class DefaultFormatter(logging.Formatter): class DefaultFormatter(logging.Formatter):
""" """
A custom log formatter class that: A custom log formatter class that: