1 /* 2 * Logback: the reliable, generic, fast and flexible logging framework. 3 * Copyright (C) 1999-2023, QOS.ch. All rights reserved. 4 * 5 * This program and the accompanying materials are dual-licensed under 6 * either the terms of the Eclipse Public License v1.0 as published by 7 * the Eclipse Foundation 8 * 9 * or (per the licensee's choosing) 10 * 11 * under the terms of the GNU Lesser General Public License version 2.1 12 * as published by the Free Software Foundation. 13 */ 14 package ch.qos.logback.classic.spi; 15 16 import ch.qos.logback.classic.LoggerContext; 17 import ch.qos.logback.core.Context; 18 import ch.qos.logback.core.spi.ContextAware; 19 20 import java.lang.annotation.ElementType; 21 import java.lang.annotation.Retention; 22 import java.lang.annotation.RetentionPolicy; 23 import java.lang.annotation.Target; 24 25 /** 26 * Allows programmatic initialization and configuration of Logback. The 27 * ServiceLoader is typically used to instantiate implementations and thus 28 * implementations will need to follow the guidelines of the ServiceLoader, 29 * in particular the no-arg constructor requirement. 30 * 31 * The return type of {@link #configure(LoggerContext) configure} was changed from 'void' to 32 * {@link ExecutionStatus) in logback version 1.3.0. 33 */ 34 public interface Configurator extends ContextAware { 35 36 enum ExecutionStatus { 37 NEUTRAL, // let the caller decide 38 INVOKE_NEXT_IF_ANY, // invoke other 39 DO_NOT_INVOKE_NEXT_IF_ANY // the caller should not invoke further configurators even some are available 40 } 41 42 /** 43 * Implementations of this method may expect that the {@link LoggerContext} is set with 44 * {@link ContextAware#setContext} before this method is invoked. 45 * 46 */ 47 ExecutionStatus configure(LoggerContext context); 48 49 }