⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logmanager.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
  /**   * Resets the logging configuration by removing all handlers for   * registered named loggers and setting their level to <code>null</code>.   * The level of the root logger will be set to <code>Level.INFO</code>.   *   * @throws SecurityException if a security manager exists and   *         the caller is not granted the permission to control   *         the logging infrastructure.   */  public synchronized void reset() throws SecurityException  {    /* Throw a SecurityException if the caller does not have the     * permission to control the logging infrastructure.     */    checkAccess();    properties = new Properties();    Iterator iter = loggers.values().iterator();    while (iter.hasNext())      {	WeakReference ref;	Logger logger;	ref = (WeakReference) iter.next();	if (ref != null)	  {	    logger = (Logger) ref.get();	    if (logger == null)	      iter.remove();	    else if (logger != rootLogger)	      logger.setLevel(null);	  }      }    rootLogger.setLevel(Level.INFO);  }  /**   * Configures the logging framework by reading a configuration file.   * The name and location of this file are specified by the system   * property <code>java.util.logging.config.file</code>.  If this   * property is not set, the URL   * "{gnu.classpath.home.url}/logging.properties" is taken, where   * "{gnu.classpath.home.url}" stands for the value of the system   * property <code>gnu.classpath.home.url</code>.   *   * <p>The task of configuring the framework is then delegated to   * {@link #readConfiguration(java.io.InputStream)}, which will   * notify registered listeners after having read the properties.   *   * @throws SecurityException if a security manager exists and   *         the caller is not granted the permission to control   *         the logging infrastructure, or if the caller is   *         not granted the permission to read the configuration   *         file.   *   * @throws IOException if there is a problem reading in the   *         configuration file.   */  public synchronized void readConfiguration()    throws IOException, SecurityException  {    String path;    InputStream inputStream;    path = System.getProperty("java.util.logging.config.file");    if ((path == null) || (path.length() == 0))      {	String url = (System.getProperty("gnu.classpath.home.url")	             + "/logging.properties");	inputStream = new URL(url).openStream();      }    else      inputStream = new java.io.FileInputStream(path);    try      {	readConfiguration(inputStream);      }    finally      {	/* Close the stream in order to save	 * resources such as file descriptors.	 */	inputStream.close();      }  }  public synchronized void readConfiguration(InputStream inputStream)    throws IOException, SecurityException  {    Properties newProperties;    Enumeration keys;    checkAccess();    newProperties = new Properties();    newProperties.load(inputStream);    this.properties = newProperties;    keys = newProperties.propertyNames();    while (keys.hasMoreElements())      {	String key = ((String) keys.nextElement()).trim();	String value = newProperties.getProperty(key);	if (value == null)	  continue;	value = value.trim();	if ("handlers".equals(key))	  {	    StringTokenizer tokenizer = new StringTokenizer(value);	    while (tokenizer.hasMoreTokens())	      {		String handlerName = tokenizer.nextToken();		try		  {		    Class handlerClass = Class.forName(handlerName);		    getLogger("").addHandler((Handler) handlerClass		                             .newInstance());		  }		catch (ClassCastException ex)		  {		    System.err.println("[LogManager] class " + handlerName		                       + " is not subclass of java.util.logging.Handler");		  }		catch (Exception ex)		  {		    //System.out.println("[LogManager.readConfiguration]"+ex);		  }	      }	  }	if (key.endsWith(".level"))	  {	    String loggerName = key.substring(0, key.length() - 6);	    Logger logger = getLogger(loggerName);	    if (logger == null)	      {		logger = Logger.getLogger(loggerName);		addLogger(logger);	      }	    try	      {		logger.setLevel(Level.parse(value));	      }	    catch (Exception _)	      {		//System.out.println("[LogManager.readConfiguration] "+_);	      }	    continue;	  }      }    /* The API specification does not talk about the     * property name that is distributed with the     * PropertyChangeEvent.  With test code, it could     * be determined that the Sun J2SE 1.4 reference     * implementation uses null for the property name.     */    pcs.firePropertyChange(null, null, null);  }  /**   * Returns the value of a configuration property as a String.   */  public synchronized String getProperty(String name)  {    if (properties != null)      return properties.getProperty(name);    else      return null;  }  /**   * Returns the value of a configuration property as an integer.   * This function is a helper used by the Classpath implementation   * of java.util.logging, it is <em>not</em> specified in the   * logging API.   *   * @param name the name of the configuration property.   *   * @param defaultValue the value that will be returned if the   *        property is not defined, or if its value is not an integer   *        number.   */  static int getIntProperty(String name, int defaultValue)  {    try      {	return Integer.parseInt(getLogManager().getProperty(name));      }    catch (Exception ex)      {	return defaultValue;      }  }  /**   * Returns the value of a configuration property as an integer,   * provided it is inside the acceptable range.   * This function is a helper used by the Classpath implementation   * of java.util.logging, it is <em>not</em> specified in the   * logging API.   *   * @param name the name of the configuration property.   *   * @param minValue the lowest acceptable value.   *   * @param maxValue the highest acceptable value.   *   * @param defaultValue the value that will be returned if the   *        property is not defined, or if its value is not an integer   *        number, or if it is less than the minimum value,   *        or if it is greater than the maximum value.   */  static int getIntPropertyClamped(String name, int defaultValue,                                   int minValue, int maxValue)  {    int val = getIntProperty(name, defaultValue);    if ((val < minValue) || (val > maxValue))      val = defaultValue;    return val;  }  /**   * Returns the value of a configuration property as a boolean.   * This function is a helper used by the Classpath implementation   * of java.util.logging, it is <em>not</em> specified in the   * logging API.   *   * @param name the name of the configuration property.   *   * @param defaultValue the value that will be returned if the   *        property is not defined, or if its value is neither   *        <code>"true"</code> nor <code>"false"</code>.   */  static boolean getBooleanProperty(String name, boolean defaultValue)  {    try      {	return (new Boolean(getLogManager().getProperty(name))).booleanValue();      }    catch (Exception ex)      {	return defaultValue;      }  }  /**   * Returns the value of a configuration property as a Level.   * This function is a helper used by the Classpath implementation   * of java.util.logging, it is <em>not</em> specified in the   * logging API.   *   * @param propertyName the name of the configuration property.   *   * @param defaultValue the value that will be returned if the   *        property is not defined, or if   *        {@link Level.parse(java.lang.String)} does not like   *        the property value.   */  static Level getLevelProperty(String propertyName, Level defaultValue)  {    try      {	return Level.parse(getLogManager().getProperty(propertyName));      }    catch (Exception ex)      {	return defaultValue;      }  }  /**   * Returns the value of a configuration property as a Class.   * This function is a helper used by the Classpath implementation   * of java.util.logging, it is <em>not</em> specified in the   * logging API.   *   * @param propertyName the name of the configuration property.   *   * @param defaultValue the value that will be returned if the   *        property is not defined, or if it does not specify   *        the name of a loadable class.   */  static final Class getClassProperty(String propertyName, Class defaultValue)  {    Class usingClass = null;    try      {	String propertyValue = logManager.getProperty(propertyName);	if (propertyValue != null)	  usingClass = Class.forName(propertyValue);	if (usingClass != null)	  return usingClass;      }    catch (Exception _)      {      }    return defaultValue;  }  static final Object getInstanceProperty(String propertyName, Class ofClass,                                          Class defaultClass)  {    Class klass = getClassProperty(propertyName, defaultClass);    if (klass == null)      return null;    try      {	Object obj = klass.newInstance();	if (ofClass.isInstance(obj))	  return obj;      }    catch (Exception _)      {      }    if (defaultClass == null)      return null;    try      {	return defaultClass.newInstance();      }    catch (java.lang.InstantiationException ex)      {	throw new RuntimeException(ex.getMessage());      }    catch (java.lang.IllegalAccessException ex)      {	throw new RuntimeException(ex.getMessage());      }  }  /**   * An instance of <code>LoggingPermission("control")</code>   * that is shared between calls to <code>checkAccess()</code>.   */  private static final LoggingPermission controlPermission = new LoggingPermission("control",                                                                                   null);  /**   * Checks whether the current security context allows changing   * the configuration of the logging framework.  For the security   * context to be trusted, it has to be granted   * a LoggingPermission("control").   *   * @throws SecurityException if a security manager exists and   *         the caller is not granted the permission to control   *         the logging infrastructure.   */  public void checkAccess() throws SecurityException  {    SecurityManager sm = System.getSecurityManager();    if (sm != null)      sm.checkPermission(controlPermission);  }  /**   * Creates a new instance of a class specified by name.   *   * @param className the name of the class of which a new instance   *        should be created.   *   * @param ofClass the class to which the new instance should   *        be either an instance or an instance of a subclass.   *        FIXME: This description is just terrible.   *   * @return the new instance, or <code>null</code> if   *         <code>className</code> is <code>null</code>, if no class   *         with that name could be found, if there was an error   *         loading that class, or if the constructor of the class   *         has thrown an exception.   */  static final Object createInstance(String className, Class ofClass)  {    Class klass;    if ((className == null) || (className.length() == 0))      return null;    try      {	klass = Class.forName(className);	if (! ofClass.isAssignableFrom(klass))	  return null;	return klass.newInstance();      }    catch (Exception _)      {	return null;      }    catch (java.lang.LinkageError _)      {	return null;      }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -