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   /**
64    * Provides logging without clients having to mess with
65    * configuration/initialization.
66    *
67    * @author Andrew C. Oliver (acoliver at apache dot org)
68    * @author Marc Johnson (mjohnson at apache dot org)
69    * @author Nicola Ken Barozzi (nicolaken at apache.org)
70    */
71   
72   public class POILogFactory
73   {
74   
75       // map of POILogger instances, with classes as keys
76       private static Map          _loggers = new HashMap();;
77   
78   
79       /**
80        * construct a POILogFactory.
81        */
82   
83       private POILogFactory()
84       {
85       }
86   
87       /**
88        * Get a logger, based on a class name
89        *
90        * @param theclass the class whose name defines the log
91        *
92        * @return a POILogger for the specified class
93        */
94   
95       public static POILogger getLogger(final Class theclass)
96       {
97           return getLogger(theclass.getName());
98       }
99       
100      /**
101       * Get a logger, based on a String
102       *
103       * @param cat the String that defines the log
104       *
105       * @return a POILogger for the specified class
106       */
107  
108      public static POILogger getLogger(final String cat)
109      {
110          POILogger logger = null;
111  
112          if (_loggers.containsKey(cat))
113          {
114              logger = ( POILogger ) _loggers.get(cat);
115          }
116          else
117          {
118              try{
119                String loggerClassName = System.getProperty("org.apache.poi.util.POILogger");
120                Class loggerClass = Class.forName(loggerClassName);
121                logger = ( POILogger ) loggerClass.newInstance();
122              }
123              catch(Exception e){
124              
125                logger = new NullLogger();
126              }
127              
128              logger.initialize(cat);
129              
130              _loggers.put(cat, logger);
131          }
132          return logger;
133      }
134          
135  }   // end public class POILogFactory
136