1   /*
2    * Copyright (c) 2004-2009 QOS.ch All rights reserved.
3    * 
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   * 
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   * 
14   * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  package org.slf4j.cal10n;
23  
24  import org.slf4j.Logger;
25  import org.slf4j.LoggerFactory;
26  
27  import ch.qos.cal10n.IMessageConveyor;
28  
29  /**
30   * 
31   * This class is essentially a wrapper around an {@link LoggerFactory} producing
32   * {@link LocLogger} instances.
33   * 
34   * <p>
35   * Contrary to {@link LoggerFactory#getLogger(String)} method of
36   * {@link LoggerFactory}, each call to {@link getLocLogger} produces a new
37   * instance of {@link LocLogger}. This should not matter because a LocLogger
38   * instance does have any state beyond that of the {@link Logger} in stance it
39   * wraps and its message conveyor.
40   * 
41   * @author Ceki G&uuml;c&uuml;
42   * 
43   */
44  public class LocLoggerFactory {
45  
46    final IMessageConveyor imc;
47  
48    public LocLoggerFactory(IMessageConveyor imc) {
49      this.imc = imc;
50    }
51  
52    /**
53     * Get an LocLogger instance by name.
54     * 
55     * @param name
56     * @return
57     */
58    public LocLogger getLocLogger(String name) {
59      return new LocLogger(LoggerFactory.getLogger(name), imc);
60    }
61  
62    /**
63     * Get a new LocLogger instance by class. The returned LocLogger will be named
64     * after the class.
65     * 
66     * @param clazz
67     * @return
68     */
69    @SuppressWarnings("unchecked")
70    public LocLogger getLocLogger(Class clazz) {
71      return getLocLogger(clazz.getName());
72    }
73  }