1  /*
     2   * Copyright the original author or authors.
     3   * 
     4   * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   * 
     8   *      http://www.mozilla.org/MPL/MPL-1.1.html
     9   * 
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16   
    17  import org.as2lib.core.BasicInterface;
    18  import org.as2lib.env.log.Logger;
    19  
    20  /**
    21   * {@code LoggerRepository} is used to obtain {@code Logger} instances.
    22   *
    23   * <p>What logger instances are returned and how they are organized depends on the
    24   * specific implementation.
    25   * 
    26   * <p>There are simple implementations that just always returns instances of the
    27   * same class that are configured with the passed-in name.
    28   *
    29   * <p>Other implementations organize the loggers in a more complex way like in a
    30   * hierarchy.
    31   *
    32   * <p>All implementations have their strengths and weaknesses. In most cases you
    33   * have to decide between performance and functionality, like ease of configuration.
    34   * Take a look at the {@code org.as2lib.env.log.repository} package on what logger
    35   * repositories are supported.
    36   *
    37   * <p>When working with logger repositories you normally store them in the log
    38   * manager using the static {@link LogManager#setLoggerRepository} method. You can
    39   * then use the static {@link LogManager#getLogger} method to obtain loggers from
    40   * the set repository.
    41   *
    42   * @author Simon Wacker
    43   */
    44  interface org.as2lib.env.log.LoggerRepository extends BasicInterface {
    45  	
    46  	/**
    47  	 * Returns a pre-configured logger for the passed-in {@code name}.
    48  	 * 
    49  	 * <p>The implementation of this method can be simple and only return new logger
    50  	 * instances or complex and structuring the loggers in a hierarchy. Thus invoking
    51  	 * this method can be very fast or not that fast. So it is proposed to store the
    52  	 * received logger by yourself.
    53  	 *
    54  	 * @param name the name of the logger to return
    55  	 * @return a specific logger depending on the passed-in {@code name}
    56  	 */
    57  	public function getLogger(name:String):Logger;
    58  	
    59  }