logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From yo...@apache.org
Subject cvs commit: logging-log4j/src/java/org/apache/log4j LogManager.java
Date Thu, 28 Jul 2005 19:12:46 GMT
yoavs       2005/07/28 12:12:46

  Modified:    docs     HISTORY.txt
               src/java/org/apache/log4j LogManager.java
  Log:
  Fixed Bugzilla 30853 (http://issues.apache.org/bugzilla/show_bug.cgi?id=30853).
  
  Note that this fix introduces usage of the log4j.debug system property again.
  While we want to stay away from this system property, I'm not sure a better
  solution can be had since this initial debug information happens prior
  to Logger setup.  If an alternative solution is found without using this
  system property, I'd be all for replacing my fix with the better one.
  
  Revision  Changes    Path
  1.32      +4 -0      logging-log4j/docs/HISTORY.txt
  
  Index: HISTORY.txt
  ===================================================================
  RCS file: /home/cvs/logging-log4j/docs/HISTORY.txt,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- HISTORY.txt	28 Jul 2005 18:41:12 -0000	1.31
  +++ HISTORY.txt	28 Jul 2005 19:12:46 -0000	1.32
  @@ -50,6 +50,10 @@
    - Closed Bugzilla 34163, missing chainsaw module in xdocs/install-chainsaw.xml,
      which had been previously fixed.
      http://issues.apache.org/bugzilla/show_bug.cgi?id=34163 [*]
  +
  + - Fixed Bugzilla 30853: made System.out printing conditional upon
  +   log4j.debug system property. [*]
  +   
    
     
     January 20th, 2005
  
  
  
  1.44      +209 -178  logging-log4j/src/java/org/apache/log4j/LogManager.java
  
  Index: LogManager.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/LogManager.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- LogManager.java	12 May 2005 03:55:45 -0000	1.43
  +++ LogManager.java	28 Jul 2005 19:12:46 -0000	1.44
  @@ -40,187 +40,218 @@
    *
    * @author Ceki Gülcü */
   public class LogManager {
  -  private static Object guard = null;
  -  private static RepositorySelector repositorySelector;
  -  //private static Scheduler schedulerInstance = null;
  -
  -  /**
  -   * The default LoggerRepository instance created by LogManager. This instance
  -   * is provided for the convenience of the {@link RepositorySelector} instance.
  -   * The selector, if it choses, may ignore this default repository.
  -   */
  -  public final static LoggerRepository defaultLoggerRepository;
  -  
  +    /**
  +     * Concurrency guard.
  +     */
  +    private static Object guard = null;
   
  -  
  -  // The following static initializer gets invoked immediately after a call to 
  -  // Logger.getLogger() is made. Here is a description of the static initializer.
  -  // 
  -  // create defaultLoggerRepository
  -  // configure(defaultLoggerRepository) depending on system properties
  -  // during the configuration of defaultLoggerRepository a temporary repository 
  -  // selector is used.
  -  //
  -  // 
  -  static {
  -    //System.out.println("**Start of LogManager static initializer");
  -    defaultLoggerRepository = new Hierarchy(new RootLogger(Level.DEBUG));
  -    defaultLoggerRepository.setName(Constants.DEFAULT_REPOSITORY_NAME);
  -    
  -    // temporary repository
  -    repositorySelector = new DefaultRepositorySelector(defaultLoggerRepository);
  -    
  -    //  Attempt to perform automatic configuration of the default repository
  -    String configuratorClassName =
  -      OptionConverter.getSystemProperty(Constants.CONFIGURATOR_CLASS_KEY, null);
  -    String configurationOptionStr = 
  -      OptionConverter.getSystemProperty(Constants.DEFAULT_CONFIGURATION_KEY, null);
  -
  -    if (configurationOptionStr == null) {
  -      if (Loader.getResource(Constants.DEFAULT_XML_CONFIGURATION_FILE) != null) {
  -        configurationOptionStr = Constants.DEFAULT_XML_CONFIGURATION_FILE;
  -      } else if (
  -        Loader.getResource(Constants.DEFAULT_CONFIGURATION_FILE) != null) {
  -        configurationOptionStr = Constants.DEFAULT_CONFIGURATION_FILE;
  -      }
  -    }
  -
  -    System.out.println("*** configurationOptionStr=" + configurationOptionStr);
  -
  -    IntializationUtil.initialConfiguration(
  -        defaultLoggerRepository, configurationOptionStr, configuratorClassName);
  -    
  -    String repositorySelectorStr = 
  -      OptionConverter.getSystemProperty("log4j.repositorySelector", null);
  -
  -    if (repositorySelectorStr == null) {
  -      // NOTHING TO DO, the default repository has been configured already
  -    } else if (repositorySelectorStr.equalsIgnoreCase("JNDI")) {
  -      System.out.println("*** Will use ContextJNDISelector **");
  -      repositorySelector = new ContextJNDISelector();
  -      guard = new Object();
  -    } else {
  -      Object r =
  -        OptionConverter.instantiateByClassName(
  -          repositorySelectorStr, RepositorySelector.class, null);
  -
  -      if (r instanceof RepositorySelector) {
  -        System.out.println(
  -          "*** Using [" + repositorySelectorStr
  -          + "] instance as repository selector.");
  -        repositorySelector = (RepositorySelector) r;
  -        guard = new Object();
  -      } else {
  -        System.out.println(
  -          "*** Could not insantiate [" + repositorySelectorStr
  -          + "] as repository selector.");
  -        System.out.println("*** Using default repository selector");
  -        repositorySelector = new DefaultRepositorySelector(defaultLoggerRepository);
  -      }
  -    }
  +    /**
  +     * The repository selector.
  +     */
  +    private static RepositorySelector repositorySelector;
   
  -    System.out.println("** End of LogManager static initializer");
  -  }
  +    /**
  +     * The debug flag, false by default.
  +     * True will cause debug printing to System.out.
  +     * Modify via system property log4j.debug.
  +     */
  +    private static boolean debug = false;
   
  -  /**
  -     Sets <code>RepositorySelector</code> but only if the correct
  -     <em>guard</em> is passed as parameter.
  -
  -     <p>Initally the guard is null, unless the JVM is started with the
  -     log4j.repositorySelector system property
  -     (-Dlog4j.repositorySelector=[JNDI | <fully qualified class name>]).
  -     If the guard is
  -     <code>null</code>, then invoking this method sets the logger
  -     repository and the guard. Following invocations will throw a {@link
  -     IllegalArgumentException}, unless the previously set
  -     <code>guard</code> is passed as the second parameter.
  -
  -     <p>This allows a high-level component to set the {@link
  -     RepositorySelector} used by the <code>LogManager</code>.
  -
  -     <p>For example, when tomcat starts it will be able to install its
  -     own repository selector. However, if and when Tomcat is embedded
  -     within JBoss, then JBoss will install its own repository selector
  -     and Tomcat will use the repository selector set by its container,
  -     JBoss.  
  -     */
  -  public static void setRepositorySelector(
  -    RepositorySelector selector, Object guard) throws IllegalArgumentException {
  -    if ((LogManager.guard != null) && (LogManager.guard != guard)) {
  -      throw new IllegalArgumentException(
  -        "Attempted to reset the LoggerFactory without possessing the guard.");
  -    }
  -    if (selector == null) {
  -      throw new IllegalArgumentException(
  -        "RepositorySelector must be non-null.");
  -    }
  -
  -    LogManager.guard = guard;
  -    LogManager.repositorySelector = selector;
  -  }
  -
  -
  -  /**
  -   * Return the repository selector currently in use.
  -   * 
  -   * @since 1.3
  -   * @return {@link RepositorySelector} currently in use.
  -   */
  -  public static RepositorySelector getRepositorySelector() {
  -    return  LogManager.repositorySelector;
  -  } 
  +    /**
  +     * The default LoggerRepository instance created by LogManager. This instance
  +     * is provided for the convenience of the {@link RepositorySelector} instance.
  +     * The selector, if it choses, may ignore this default repository.
  +     */
  +    public static final LoggerRepository defaultLoggerRepository;
     
  -  public static LoggerRepository getLoggerRepository() {
  -    return repositorySelector.getLoggerRepository();
  -  }
  -
  -  /**
  -     Retrieve the appropriate root logger.
  -   */
  -  public static Logger getRootLogger() {
  -    // Delegate the actual manufacturing of the logger to the logger repository.
  -    return repositorySelector.getLoggerRepository().getRootLogger();
  -  }
  -
  -  /**
  -     Retrieve the appropriate {@link Logger} instance.
  -  */
  -  public static Logger getLogger(String name) {
  -    //LogLog.info("LogManager.getLogger("+name+") called");
  -    // Delegate the actual manufacturing of the logger to the logger repository.
  -    return repositorySelector.getLoggerRepository().getLogger(name);
  -  }
  -
  -  /**
  -      Retrieve the appropriate {@link Logger} instance.
  -   */
  -  public static Logger getLogger(Class clazz) {
  -    // Delegate the actual manufacturing of the logger to the logger repository.
  -    return repositorySelector.getLoggerRepository().getLogger(clazz.getName());
  -  }
  -
  -  /**
  -     Retrieve the appropriate {@link Logger} instance.
  -  */
  -  public static Logger getLogger(String name, LoggerFactory factory) {
  -    // Delegate the actual manufacturing of the logger to the logger repository.
  -    return repositorySelector.getLoggerRepository().getLogger(name, factory);
  -  }
  -
  -  public static Logger exists(String name) {
  -    return repositorySelector.getLoggerRepository().exists(name);
  -  }
  -
  -  public static Enumeration getCurrentLoggers() {
  -    return repositorySelector.getLoggerRepository().getCurrentLoggers();
  -  }
  -
  -  public static void shutdown() {
  -    repositorySelector.getLoggerRepository().shutdown();
  -  }
  -
  -  public static void resetConfiguration() {
  -    repositorySelector.getLoggerRepository().resetConfiguration();
  -  }
   
  +    /**
  +     * The following static initializer gets invoked immediately after a call to 
  +     * Logger.getLogger() is made. Here is a description of the static initializer:
  +     *
  +     * - Create defaultLoggerRepository,
  +     * - Configure(defaultLoggerRepository) depending on system properties,
  +     *   during the configuration of defaultLoggerRepository a temporary repository 
  +     *   selector is used.
  +     */
  +    static {
  +        // Check debug
  +        String debugProp = System.getProperty("log4j.debug");
  +        if(Boolean.valueOf(debugProp).booleanValue()) {
  +            debug = true;
  +        }
  +
  +        if(debug) {
  +            System.out.println("**Start of LogManager static initializer");
  +        }
  +
  +        defaultLoggerRepository = new Hierarchy(new RootLogger(Level.DEBUG));
  +        defaultLoggerRepository.setName(Constants.DEFAULT_REPOSITORY_NAME);
  +        
  +        // temporary repository
  +        repositorySelector = new DefaultRepositorySelector(defaultLoggerRepository);
  +        
  +        //  Attempt to perform automatic configuration of the default repository
  +        String configuratorClassName =
  +            OptionConverter.getSystemProperty(Constants.CONFIGURATOR_CLASS_KEY, null);
  +        String configurationOptionStr = 
  +            OptionConverter.getSystemProperty(Constants.DEFAULT_CONFIGURATION_KEY, null);
  +        
  +        if (configurationOptionStr == null) {
  +            if (Loader.getResource(Constants.DEFAULT_XML_CONFIGURATION_FILE) != null) {
  +                configurationOptionStr = Constants.DEFAULT_XML_CONFIGURATION_FILE;
  +            } else if (
  +                       Loader.getResource(Constants.DEFAULT_CONFIGURATION_FILE) != null)
{
  +                configurationOptionStr = Constants.DEFAULT_CONFIGURATION_FILE;
  +            }
  +        }
  +        
  +        if(debug) {
  +            System.out.println("*** configurationOptionStr=" + configurationOptionStr);
  +        }
  +      
  +        IntializationUtil.initialConfiguration(
  +                                               defaultLoggerRepository, configurationOptionStr,
configuratorClassName);
  +        
  +        String repositorySelectorStr = 
  +            OptionConverter.getSystemProperty("log4j.repositorySelector", null);
  +        
  +        if (repositorySelectorStr == null) {
  +            // NOTHING TO DO, the default repository has been configured already
  +        } else if (repositorySelectorStr.equalsIgnoreCase("JNDI")) {
  +            if(debug) {
  +                System.out.println("*** Will use ContextJNDISelector **");
  +            }
  +
  +            repositorySelector = new ContextJNDISelector();
  +            guard = new Object();
  +        } else {
  +            Object r =
  +                OptionConverter.instantiateByClassName(
  +                                                       repositorySelectorStr, RepositorySelector.class,
null);
  +            
  +            if (r instanceof RepositorySelector) {
  +                if(debug) {
  +                    System.out.println(
  +                                       "*** Using [" + repositorySelectorStr
  +                                       + "] instance as repository selector.");
  +                }
  +                repositorySelector = (RepositorySelector) r;
  +                guard = new Object();
  +            } else {
  +                if(debug) {
  +                    System.out.println(
  +                                       "*** Could not insantiate [" + repositorySelectorStr
  +                                       + "] as repository selector.");
  +                    System.out.println("*** Using default repository selector");
  +                }
  +
  +                repositorySelector = new DefaultRepositorySelector(defaultLoggerRepository);
  +            }
  +        }
  +
  +        if(debug) {
  +            System.out.println("** End of LogManager static initializer");
  +        }
  +    }
  +
  +    /**
  +       Sets <code>RepositorySelector</code> but only if the correct
  +       <em>guard</em> is passed as parameter.
  +       
  +       <p>Initally the guard is null, unless the JVM is started with the
  +       log4j.repositorySelector system property
  +       (-Dlog4j.repositorySelector=[JNDI | <fully qualified class name>]).
  +       If the guard is
  +       <code>null</code>, then invoking this method sets the logger
  +       repository and the guard. Following invocations will throw a {@link
  +       IllegalArgumentException}, unless the previously set
  +       <code>guard</code> is passed as the second parameter.
  +       
  +       <p>This allows a high-level component to set the {@link
  +       RepositorySelector} used by the <code>LogManager</code>.
  +       
  +       <p>For example, when tomcat starts it will be able to install its
  +       own repository selector. However, if and when Tomcat is embedded
  +       within JBoss, then JBoss will install its own repository selector
  +       and Tomcat will use the repository selector set by its container,
  +       JBoss.  
  +    */
  +    public static void setRepositorySelector(
  +                                             RepositorySelector selector, Object guard)
throws IllegalArgumentException {
  +        if ((LogManager.guard != null) && (LogManager.guard != guard)) {
  +            throw new IllegalArgumentException(
  +                                               "Attempted to reset the LoggerFactory without
possessing the guard.");
  +        }
  +        if (selector == null) {
  +            throw new IllegalArgumentException(
  +                                               "RepositorySelector must be non-null.");
  +        }
  +        
  +        LogManager.guard = guard;
  +        LogManager.repositorySelector = selector;
  +    }
  +    
  +    
  +    /**
  +     * Return the repository selector currently in use.
  +     * 
  +     * @since 1.3
  +     * @return {@link RepositorySelector} currently in use.
  +     */
  +    public static RepositorySelector getRepositorySelector() {
  +        return  LogManager.repositorySelector;
  +    } 
  +    
  +    public static LoggerRepository getLoggerRepository() {
  +        return repositorySelector.getLoggerRepository();
  +    }
  +    
  +    /**
  +       Retrieve the appropriate root logger.
  +    */
  +    public static Logger getRootLogger() {
  +        // Delegate the actual manufacturing of the logger to the logger repository.
  +        return repositorySelector.getLoggerRepository().getRootLogger();
  +    }
  +    
  +    /**
  +       Retrieve the appropriate {@link Logger} instance.
  +    */
  +    public static Logger getLogger(String name) {
  +        // Delegate the actual manufacturing of the logger to the logger repository.
  +        return repositorySelector.getLoggerRepository().getLogger(name);
  +    }
  +    
  +    /**
  +       Retrieve the appropriate {@link Logger} instance.
  +    */
  +    public static Logger getLogger(Class clazz) {
  +        // Delegate the actual manufacturing of the logger to the logger repository.
  +        return repositorySelector.getLoggerRepository().getLogger(clazz.getName());
  +    }
  +    
  +    /**
  +       Retrieve the appropriate {@link Logger} instance.
  +    */
  +    public static Logger getLogger(String name, LoggerFactory factory) {
  +        // Delegate the actual manufacturing of the logger to the logger repository.
  +        return repositorySelector.getLoggerRepository().getLogger(name, factory);
  +    }
  +    
  +    public static Logger exists(String name) {
  +        return repositorySelector.getLoggerRepository().exists(name);
  +    }
  +    
  +    public static Enumeration getCurrentLoggers() {
  +        return repositorySelector.getLoggerRepository().getCurrentLoggers();
  +    }
  +    
  +    public static void shutdown() {
  +        repositorySelector.getLoggerRepository().shutdown();
  +    }
  +    
  +    public static void resetConfiguration() {
  +        repositorySelector.getLoggerRepository().resetConfiguration();
  +    }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message