LoggerAPI.java

package io.jstach.rainbowgum;

/**
 * Identifies which logging facade a logger name passed to
 * {@link LogConfig.LoggerRegistry#registerLoggerName(LoggerAPI, String)} came through.
 *
 * @apiNote currently informational only: {@link LogConfig.LoggerRegistry} does not yet do
 * anything different based on which {@link LoggerAPI} a name was registered with.
 */
public sealed interface LoggerAPI permits LoggerAPI.Standard {

	/**
	 * The logging facades RainbowGum ships an implementation for.
	 */
	enum Standard implements LoggerAPI {

		/**
		 * {@code rainbowgum-slf4j}.
		 */
		SLF4J,
		/**
		 * {@code rainbowgum-systemlogger} ({@link java.lang.System.Logger}).
		 */
		SYSTEM_LOGGER,
		/**
		 * {@code rainbowgum-log4j2} (Log4j2's own API, not an SLF4J binding).
		 */
		LOG4J2,
		/**
		 * {@code rainbowgum-jul-logmanager} ({@code java.util.logging}).
		 */
		JUL,
		/**
		 * {@code rainbowgum-jboss-logging}.
		 */
		JBOSS_LOGGING,
		/**
		 * {@code rainbowgum-avaje-config} ({@code io.avaje.applog.AppLog}).
		 */
		AVAJE_APPLOG,
		/**
		 * A facade not represented by another constant of this enum.
		 */
		UNSUPPORTED;

	}

}