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

📄 logmanager.java

📁 gcc的JAVA模块的源代码
💻 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)	{	  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 + -