package tc.oc.commons.core.logging; import java.util.logging.Logger; import javax.annotation.Nullable; import tc.oc.commons.core.plugin.PluginResolver; public abstract class PluginLoggerFactory<Plugin> extends ClassLoggerFactory { private final PluginResolver<Plugin> resolver; protected PluginLoggerFactory(PluginResolver<Plugin> resolver) { this.resolver = resolver; } protected abstract Logger pluginLogger(Plugin plugin); @Override public Logger defaultLogger(Class<?> klass) { final Plugin plugin = resolver.getProvidingPlugin(klass); return plugin != null ? pluginLogger(plugin) : defaultLogger(); } }