mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-21 08:40:03 +02:00
log: using filters to separate server and task logs from the rest
This commit is contained in:
parent
f2183ec3e4
commit
3d13b20fda
@ -29,32 +29,44 @@ LOGGING_CONFIG = {
|
|||||||
"datefmt": "%Y-%m-%d %H:%M:%S",
|
"datefmt": "%Y-%m-%d %H:%M:%S",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"handlers": {
|
"filters": {
|
||||||
"default": {
|
"only_pydase_server_or_task": {
|
||||||
"formatter": "default",
|
"()": "pydase.utils.logging.NameFilter",
|
||||||
"class": "logging.StreamHandler",
|
"matches": ["pydase.server", "pydase.task"],
|
||||||
"stream": "ext://sys.stderr",
|
|
||||||
},
|
},
|
||||||
"stdout": {
|
"exclude_pydase_server_and_task": {
|
||||||
|
"()": "pydase.utils.logging.NameFilter",
|
||||||
|
"matches": ["pydase.server", "pydase.task"],
|
||||||
|
"invert": True,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"handlers": {
|
||||||
|
"stdout_handler": {
|
||||||
"formatter": "default",
|
"formatter": "default",
|
||||||
"class": "logging.StreamHandler",
|
"class": "logging.StreamHandler",
|
||||||
"stream": "ext://sys.stdout",
|
"stream": "ext://sys.stdout",
|
||||||
|
"filters": ["only_pydase_server_or_task"],
|
||||||
|
},
|
||||||
|
"stderr_handler": {
|
||||||
|
"formatter": "default",
|
||||||
|
"class": "logging.StreamHandler",
|
||||||
|
"stream": "ext://sys.stderr",
|
||||||
|
"filters": ["exclude_pydase_server_and_task"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"loggers": {
|
"loggers": {
|
||||||
"pydase.server": {
|
"pydase": {
|
||||||
"handlers": ["stdout"],
|
"handlers": ["stdout_handler", "stderr_handler"],
|
||||||
"level": LOG_LEVEL,
|
"level": LOG_LEVEL,
|
||||||
"propagate": False,
|
"propagate": False,
|
||||||
},
|
},
|
||||||
"pydase": {"handlers": ["default"], "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,
|
||||||
},
|
},
|
||||||
@ -62,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, matches: list[str], invert: bool = False):
|
||||||
|
super().__init__()
|
||||||
|
self.matches = matches
|
||||||
|
self.invert = invert
|
||||||
|
|
||||||
|
def filter(self, record: logging.LogRecord) -> bool:
|
||||||
|
if self.invert:
|
||||||
|
return not any(record.name.startswith(match) for match in self.matches)
|
||||||
|
return any(record.name.startswith(match) for match in self.matches)
|
||||||
|
|
||||||
|
|
||||||
class DefaultFormatter(logging.Formatter):
|
class DefaultFormatter(logging.Formatter):
|
||||||
"""
|
"""
|
||||||
A custom log formatter class that:
|
A custom log formatter class that:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user