In Python logging, "loggers" are basically sources and "handlers" are basically sinks.
This makes it a little weird that DagsterLogManager, which is responsible for routing log messages to a set of sinks, contains a list of loggers, not a list of handlers. This weirdness is reflected in the implementations of most of the built-in Dagster LoggerDefinitions: they essentially create a handler, which contains the meat of the custom behavior, and then wrap it in a vanilla logger.
This is not a user-facing API change. However, it makes it possible to add new logging APIs that don't require users to wrap their handlers in loggers.
I am relatively new to Python logging, so please let me know if I'm misunderstanding something crucial.