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 java.io.IOException; 21 import java.io.InputStream; 22 import java.net.URL; 23 24 import org.apache.log4j.PropertyConfigurator; 25 import org.apache.log4j.spi.Configurator; 26 import org.apache.log4j.spi.LoggerRepository; 27 28 /** 29 * The <code>DefaultLF5Configurator</code> provides a default 30 * configuration for the <code>LF5Appender</code>. 31 * 32 * Note: The preferred method for configuring a <code>LF5Appender</code> 33 * is to use the <code>LF5Manager</code> class. This class ensures 34 * that configuration does not occur multiple times, and improves system 35 * performance. Reconfiguring the monitor multiple times can result in 36 * unexpected behavior. 37 * 38 * @author Brent Sprecher 39 */ 40 41 // Contributed by ThoughtWorks Inc. 42 43 public class DefaultLF5Configurator implements Configurator { 44 //-------------------------------------------------------------------------- 45 // Constants: 46 //-------------------------------------------------------------------------- 47 48 //-------------------------------------------------------------------------- 49 // Protected Variables: 50 //-------------------------------------------------------------------------- 51 52 //-------------------------------------------------------------------------- 53 // Private Variables: 54 //-------------------------------------------------------------------------- 55 56 //-------------------------------------------------------------------------- 57 // Constructors: 58 //-------------------------------------------------------------------------- 59 /** 60 * This class should never be instantiated! It implements the <code> 61 * Configurator</code> 62 * interface, but does not provide the same functionality as full 63 * configurator class. 64 */ 65 private DefaultLF5Configurator() { 66 67 } 68 69 //-------------------------------------------------------------------------- 70 // Public Methods: 71 //-------------------------------------------------------------------------- 72 /** 73 * This method configures the <code>LF5Appender</code> using a 74 * default configuration file. The default configuration file is 75 * <bold>defaultconfig.properties</bold>. 76 * @throws java.io.IOException 77 */ 78 public static void configure() throws IOException { 79 String resource = 80 "/org/apache/log4j/lf5/config/defaultconfig.properties"; 81 URL configFileResource = 82 DefaultLF5Configurator.class.getResource(resource); 83 84 if (configFileResource != null) { 85 PropertyConfigurator.configure(configFileResource); 86 } else { 87 throw new IOException("Error: Unable to open the resource" + 88 resource); 89 } 90 91 } 92 93 /** 94 * This is a dummy method that will throw an 95 * <code>IllegalStateException</code> if used. 96 * 97 * @since 1.2.17 98 */ 99 public void doConfigure(InputStream inputStream, LoggerRepository repository) { 100 throw new IllegalStateException("This class should NOT be instantiated!"); 101 } 102 103 /** 104 * This is a dummy method that will throw an 105 * <code>IllegalStateException</code> if used. 106 */ 107 public void doConfigure(URL configURL, LoggerRepository repository) { 108 throw new IllegalStateException("This class should NOT be instantiated!"); 109 } 110 111 //-------------------------------------------------------------------------- 112 // Protected Methods: 113 //-------------------------------------------------------------------------- 114 115 //-------------------------------------------------------------------------- 116 // Private Methods: 117 //-------------------------------------------------------------------------- 118 119 //-------------------------------------------------------------------------- 120 // Nested Top-Level Classes or Interfaces: 121 //-------------------------------------------------------------------------- 122 123 }