rics.logs#

Utility methods for logging tasks.

Module Attributes

FORMAT

Default logging format; <date-format>.378 [rics:DEBUG] I'm a debug message!

DATE_FORMAT

Default logging date format; 2022-02-05T11:17:05<logging-format>

Functions

basic_config(*[, format, datefmt, level, force])

Do basic logging configuration with package defaults.

disable_temporarily(*loggers)

Temporarily disable logging.

FORMAT: str = '%(asctime)s.%(msecs)03d [%(name)s:%(levelname)s] %(message)s'#

Default logging format; <date-format>.378 [rics:DEBUG] I'm a debug message!

DATE_FORMAT: str = '%Y-%m-%dT%H:%M:%S'#

Default logging date format; 2022-02-05T11:17:05<logging-format>

basic_config(*, format: str = '%(asctime)s.%(msecs)03d [%(name)s:%(levelname)s] %(message)s', datefmt: str = '%Y-%m-%dT%H:%M:%S', level: int | str = 'INFO', force: bool = True, **kwargs: Any) None[source]#

Do basic logging configuration with package defaults.

Simple wrapper for the standard logging.basicConfig()-method, using my personal preferences for defaults.

Parameters:
  • format – Format string for emitted messages; see FORMAT.

  • datefmt – Format string for date/time; see DATE_FORMAT. If bool(datefmt) is False, remove the time components if format == FORMAT (the default).

  • level – Log level for the root logger.

  • force – If True, override existing configuration if it exists.

  • **kwargs – Keyword arguments for logging.basicConfig().

Keyword Arguments:

_level – Additional log levels to set, replacing double underscores with dots to produce the logger names. For example, passing rics__performance_level=logging.INFO will modify the ‘rics.performance’-logger.

Examples

Basic usage.

>>> import logging
>>> basic_config(level=logging.INFO, rics_level=logging.DEBUG)
>>> logging.getLogger("rics").debug("I'm a debug message!")
>>> logging.debug("I'm a debug message!")
>>> logging.critical("I'm a critical message!")  # Doctest: +SKIP
2022-02-05T11:17:05.378 [rics:DEBUG] I'm a debug message!
2022-02-05T11:17:05.378 [root:CRITICAL] I'm a critical message!

Removing time from the message template. Setting datefmt="" works as well.

>>> import sys
>>> basic_config(datefmt=False, stream=sys.stdout)
>>> logging.info("No time!")
[root:INFO] No time!
disable_temporarily(*loggers: str | Logger | LoggerAdapter) Any[source]#

Temporarily disable logging.

Parameters:

*loggers – Loggers to disable.

Yields:

Nothing.

Examples

Disable all logging temporarily.

>>> import logging
>>> logging.basicConfig()
>>> with disable_temporarily(logging.root):
...     logging.info("This message is ignored.")