Skip to content

Consider making logging more granular

Summary

Leverage Python's dot-separated logger hierarchy to give developers more control over logging behavior and make it more granular:

  • Behavior: handler, format, level
  • Source: tap, stream, SDK.

Proposed benefits

Developers can make output more or less verbose for certain streams, etc.

Proposal details

Screen_Shot_2022-02-23_at_21.06.12

>>> import logging
>>> formatter = logging.Formatter("{asctime} {levelname} {message}", style="{")
>>> handler = logging.StreamHandler()
>>> handler.setFormatter(formatter)
>>> tap_logger = logging.getLogger("tap-example")
>>> tap_logger.addHandler(handler)
>>> tap_logger.setLevel(logging.INFO)  # Display INFO and up
>>> stream_logger = logging.getLogger("tap-example.my_stream")
>>> stream_logger.setLevel(logging.WARNING)  # Display WARNING and up
>>> tap_logger.debug("Info from tap")
>>> tap_logger.info("Info from tap")
2022-02-23 21:10:34,165 INFO Info from tap
>>> stream_logger.info("Info from stream")
>>> stream_logger.warning("Warning from stream")
2022-02-23 21:10:34,175 WARNING Warning from stream

Best reasons not to build

We may not want developers to make their packages to quiet so end-users have useful debugging information by default.

Edited by Edgar R. Mondragón