mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-06-05 13:10:41 +02:00
renames function, can now take the name of the logger (defaults to root logger)
This commit is contained in:
parent
23f051d6f1
commit
0565c82448
@ -191,19 +191,43 @@ def setup_logging() -> None:
|
|||||||
logging.config.dictConfig(LOGGING_CONFIG)
|
logging.config.dictConfig(LOGGING_CONFIG)
|
||||||
|
|
||||||
|
|
||||||
def configure_root_logger_with_pydase_formatter(
|
def configure_logging_with_pydase_formatter(
|
||||||
level: int = logging.INFO, stream: TextIO | None = None
|
name: str | None = None, level: int = logging.INFO, stream: TextIO | None = None
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Configures root logger with pydase formatting. Log level and stream are
|
"""Configure a logger with the pydase `DefaultFormatter`.
|
||||||
configurable.
|
|
||||||
|
This sets up a `StreamHandler` with the custom `DefaultFormatter`, which includes
|
||||||
|
timestamp, log level with color (if supported), logger name, function, and line
|
||||||
|
number. It can be used to configure the root logger or any named logger.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
level: Logging level of this logger. Defaults to logging.INFO.
|
name: The name of the logger to configure. If None, the root logger is used.
|
||||||
stream: Stream used in the logging handler. If None is passed, std.err is used.
|
level: The logging level to set on the logger (e.g., logging.DEBUG,
|
||||||
Defaults to None.
|
logging.INFO). Defaults to logging.INFO.
|
||||||
"""
|
stream: The output stream for the log messages (e.g., sys.stdout or sys.stderr).
|
||||||
|
If None, defaults to sys.stderr.
|
||||||
|
|
||||||
root_logger = logging.getLogger()
|
Example:
|
||||||
|
Configure logging in your service:
|
||||||
|
|
||||||
|
```python
|
||||||
|
import sys
|
||||||
|
from pydase.utils.logging import configure_logging_with_pydase_formatter
|
||||||
|
|
||||||
|
configure_logging_with_pydase_formatter(
|
||||||
|
name="my_service", # Use the package/module name or None for the root logger
|
||||||
|
level=logging.DEBUG, # Set the desired logging level (defaults to INFO)
|
||||||
|
stream=sys.stdout # Set the output stream (stderr by default)
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- This function adds a new handler each time it's called.
|
||||||
|
Use carefully to avoid duplicate logs.
|
||||||
|
- Colors are enabled if the stream supports TTY (e.g., in terminal).
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
logger = logging.getLogger(name=name)
|
||||||
handler = logging.StreamHandler(stream=stream)
|
handler = logging.StreamHandler(stream=stream)
|
||||||
formatter = DefaultFormatter(
|
formatter = DefaultFormatter(
|
||||||
fmt="%(asctime)s.%(msecs)03d | %(levelprefix)s | "
|
fmt="%(asctime)s.%(msecs)03d | %(levelprefix)s | "
|
||||||
@ -211,5 +235,5 @@ def configure_root_logger_with_pydase_formatter(
|
|||||||
datefmt="%Y-%m-%d %H:%M:%S",
|
datefmt="%Y-%m-%d %H:%M:%S",
|
||||||
)
|
)
|
||||||
handler.setFormatter(formatter)
|
handler.setFormatter(formatter)
|
||||||
root_logger.addHandler(handler)
|
logger.addHandler(handler)
|
||||||
root_logger.setLevel(level)
|
logger.setLevel(level)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from pydase.utils.logging import configure_root_logger_with_pydase_formatter
|
from pydase.utils.logging import configure_logging_with_pydase_formatter
|
||||||
|
|
||||||
|
|
||||||
def test_log_error(caplog: pytest.LogCaptureFixture) -> None:
|
def test_log_error(caplog: pytest.LogCaptureFixture) -> None:
|
||||||
@ -78,7 +78,7 @@ def test_before_configuring_root_logger(caplog: pytest.LogCaptureFixture) -> Non
|
|||||||
|
|
||||||
|
|
||||||
def test_configure_root_logger(caplog: pytest.LogCaptureFixture) -> None:
|
def test_configure_root_logger(caplog: pytest.LogCaptureFixture) -> None:
|
||||||
configure_root_logger_with_pydase_formatter()
|
configure_logging_with_pydase_formatter()
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logger.info("Hello world")
|
logger.info("Hello world")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user