Slf4j is one of the two examples I point to for really great java design. It's broken down into one jar for the no-op interfaces, and other jars for the various implementations. This lets library owners instrument their libraries for logging without having to make a final decision on the actual logging library and its settings. It's great.
The other example for those that are curious is micrometer. The basic API and the implementations (prometheus, statsd, etc.) are separate jars.