View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.log4j.lf5;
19  
20  import org.apache.log4j.PropertyConfigurator;
21  import org.apache.log4j.spi.Configurator;
22  import org.apache.log4j.spi.LoggerRepository;
23  
24  import java.io.IOException;
25  import java.net.URL;
26  
27  /***
28   * The <code>DefaultLF5Configurator</code> provides a default
29   * configuration for the <code>LF5Appender</code>.
30   *
31   * Note: The preferred method for configuring a <code>LF5Appender</code>
32   * is to use the <code>LF5Manager</code> class. This class ensures
33   * that configuration does not occur multiple times, and improves system
34   * performance. Reconfiguring the monitor multiple times can result in
35   * unexpected behavior.
36   *
37   * @author Brent Sprecher
38   */
39  
40  // Contributed by ThoughtWorks Inc.
41  
42  public class DefaultLF5Configurator implements Configurator {
43    //--------------------------------------------------------------------------
44    // Constants:
45    //--------------------------------------------------------------------------
46  
47    //--------------------------------------------------------------------------
48    // Protected Variables:
49    //--------------------------------------------------------------------------
50  
51    //--------------------------------------------------------------------------
52    // Private Variables:
53    //--------------------------------------------------------------------------
54  
55    //--------------------------------------------------------------------------
56    // Constructors:
57    //--------------------------------------------------------------------------
58    /***
59     * This class should never be instantiated! It implements the <code>
60     * Configurator</code>
61     * interface, but does not provide the same functionality as full
62     * configurator class.
63     */
64    private DefaultLF5Configurator() {
65  
66    }
67  
68    //--------------------------------------------------------------------------
69    // Public Methods:
70    //--------------------------------------------------------------------------
71    /***
72     * This method configures the <code>LF5Appender</code> using a
73     * default configuration file. The default configuration file is
74     * <bold>defaultconfig.properties</bold>.
75     * @throws java.io.IOException
76     */
77    public static void configure() throws IOException {
78      String resource =
79          "/org/apache/log4j/lf5/config/defaultconfig.properties";
80      URL configFileResource =
81          DefaultLF5Configurator.class.getResource(resource);
82  
83      if (configFileResource != null) {
84        PropertyConfigurator.configure(configFileResource);
85      } else {
86        throw new IOException("Error: Unable to open the resource" +
87            resource);
88      }
89  
90    }
91  
92    /***
93     * This is a dummy method that will throw an
94     * <code>IllegalStateException</code> if used.
95     */
96    public void doConfigure(URL configURL, LoggerRepository repository) {
97      throw new IllegalStateException("This class should NOT be" +
98          " instantiated!");
99    }
100 
101   //--------------------------------------------------------------------------
102   // Protected Methods:
103   //--------------------------------------------------------------------------
104 
105   //--------------------------------------------------------------------------
106   // Private Methods:
107   //--------------------------------------------------------------------------
108 
109   //--------------------------------------------------------------------------
110   // Nested Top-Level Classes or Interfaces:
111   //--------------------------------------------------------------------------
112 
113 }