1    
2    /*
3     * ====================================================================
4     * The Apache Software License, Version 1.1
5     *
6     * Copyright (c) 2002 The Apache Software Foundation.  All rights
7     * reserved.
8     *
9     * Redistribution and use in source and binary forms, with or without
10    * modification, are permitted provided that the following conditions
11    * are met:
12    *
13    * 1. Redistributions of source code must retain the above copyright
14    *    notice, this list of conditions and the following disclaimer.
15    *
16    * 2. Redistributions in binary form must reproduce the above copyright
17    *    notice, this list of conditions and the following disclaimer in
18    *    the documentation and/or other materials provided with the
19    *    distribution.
20    *
21    * 3. The end-user documentation included with the redistribution,
22    *    if any, must include the following acknowledgment:
23    *       "This product includes software developed by the
24    *        Apache Software Foundation (http://www.apache.org/)."
25    *    Alternately, this acknowledgment may appear in the software itself,
26    *    if and wherever such third-party acknowledgments normally appear.
27    *
28    * 4. The names "Apache" and "Apache Software Foundation" and
29    *    "Apache POI" must not be used to endorse or promote products
30    *    derived from this software without prior written permission. For
31    *    written permission, please contact apache@apache.org.
32    *
33    * 5. Products derived from this software may not be called "Apache",
34    *    "Apache POI", nor may "Apache" appear in their name, without
35    *    prior written permission of the Apache Software Foundation.
36    *
37    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48    * SUCH DAMAGE.
49    * ====================================================================
50    *
51    * This software consists of voluntary contributions made by many
52    * individuals on behalf of the Apache Software Foundation.  For more
53    * information on the Apache Software Foundation, please see
54    * <http://www.apache.org/>.
55    */
56   package org.apache.poi.util;
57   
58   import java.io.FileInputStream;
59   import java.io.IOException;
60   
61   import java.util.*;
62   
63   import org.apache.commons.logging.*;
64   
65   /**
66    * Provides logging without clients having to mess with
67    * configuration/initialization.
68    *
69    * @author Andrew C. Oliver (acoliver at apache dot org)
70    * @author Marc Johnson (mjohnson at apache dot org)
71    * @author Nicola Ken Barozzi (nicolaken at apache.org)
72    */
73   
74   public class POILogFactory
75   {
76       private static LogFactory   _creator = LogFactory.getFactory();
77   
78       // map of POILogger instances, with classes as keys
79       private static Map          _loggers = new HashMap();;
80   
81   
82       /**
83        * construct a POILogFactory.
84        */
85   
86       private POILogFactory()
87       {
88       }
89   
90       /**
91        * Get a logger, based on a class name
92        *
93        * @param theclass the class whose name defines the log
94        *
95        * @return a POILogger for the specified class
96        */
97   
98       public static POILogger getLogger(final Class theclass)
99       {
100          return getLogger(theclass.getName());
101      }
102      
103      /**
104       * Get a logger, based on a String
105       *
106       * @param cat the String that defines the log
107       *
108       * @return a POILogger for the specified class
109       */
110  
111      public static POILogger getLogger(final String cat)
112      {
113          POILogger logger = null;
114  
115          if (_loggers.containsKey(cat))
116          {
117              logger = ( POILogger ) _loggers.get(cat);
118          }
119          else
120          {
121              logger = new POILogger(_creator.getInstance(cat));
122              _loggers.put(cat, logger);
123          }
124          return logger;
125      }
126          
127  }   // end public class POILogFactory
128