1 /* 
2  * Copyright (c) 2004-2005 SLF4J.ORG
3  * Copyright (c) 2004-2005 QOS.ch
4  *
5  * All rights reserved.
6  * 
7  * Permission is hereby granted, free of charge, to any person obtaining
8  * a copy of this software and associated documentation files (the
9  * "Software"), to  deal in  the Software without  restriction, including
10  * without limitation  the rights to  use, copy, modify,  merge, publish,
11  * distribute, and/or sell copies of  the Software, and to permit persons
12  * to whom  the Software is furnished  to do so, provided  that the above
13  * copyright notice(s) and this permission notice appear in all copies of
14  * the  Software and  that both  the above  copyright notice(s)  and this
15  * permission notice appear in supporting documentation.
16  * 
17  * THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
18  * EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR  A PARTICULAR PURPOSE AND NONINFRINGEMENT
20  * OF  THIRD PARTY  RIGHTS. IN  NO EVENT  SHALL THE  COPYRIGHT  HOLDER OR
21  * HOLDERS  INCLUDED IN  THIS  NOTICE BE  LIABLE  FOR ANY  CLAIM, OR  ANY
22  * SPECIAL INDIRECT  OR CONSEQUENTIAL DAMAGES, OR  ANY DAMAGES WHATSOEVER
23  * RESULTING FROM LOSS  OF USE, DATA OR PROFITS, WHETHER  IN AN ACTION OF
24  * CONTRACT, NEGLIGENCE  OR OTHER TORTIOUS  ACTION, ARISING OUT OF  OR IN
25  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
26  * 
27  * Except as  contained in  this notice, the  name of a  copyright holder
28  * shall not be used in advertising or otherwise to promote the sale, use
29  * or other dealings in this Software without prior written authorization
30  * of the copyright holder.
31  *
32  */

33
34 package org.slf4j.helpers;
35
36 import java.util.ArrayList;
37 import java.util.List;
38
39 import org.slf4j.ILoggerFactory;
40 import org.slf4j.Logger;
41
42 /**
43  * SubstituteLoggerFactory is an trivial implementation of
44  * {@link ILoggerFactory} which always returns the unique instance of NOPLogger.
45  * 
46  * <p>
47  * It used as a temporary substitute for the real ILoggerFactory during its
48  * auto-configuration which may re-enter LoggerFactory to obtain logger
49  * instances. See also http://bugzilla.slf4j.org/show_bug.cgi?id=106
50  * 
51  * @author Ceki G&uuml;lc&uuml;
52  */

53 public class SubstituteLoggerFactory implements ILoggerFactory {
54
55   // keep a record of requested logger names
56   final List loggerNameList = new ArrayList();
57
58   public Logger getLogger(String name) {
59     synchronized (loggerNameList) {
60       loggerNameList.add(name);
61     }
62     return NOPLogger.NOP_LOGGER;
63   }
64
65   public List getLoggerNameList() {
66     List copy = new ArrayList();
67     synchronized (loggerNameList) {
68       copy.addAll(loggerNameList);
69     }
70     return copy;
71   }
72
73 }
74