View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.sys.context;
20  
21  import java.net.URL;
22  import java.net.URLClassLoader;
23  
24  import org.apache.log4j.Logger;
25  import org.apache.log4j.PropertyConfigurator;
26  import org.kuali.kfs.sys.KFSConstants;
27  
28  public class Log4jConfigurer {
29      private static final long MILLISECONDS_CONVERSION_MULTIPLIER = 60 * 1000;
30  
31      public static final void configureLogging(boolean doStartupStatsLogging) {
32          String settingsFile = PropertyLoadingFactoryBean.getBaseProperty(KFSConstants.LOG4J_SETTINGS_FILE_KEY);
33          String reloadMinutes = PropertyLoadingFactoryBean.getBaseProperty(KFSConstants.LOG4J_RELOAD_MINUTES_KEY);
34          long reloadMilliseconds = 5 * MILLISECONDS_CONVERSION_MULTIPLIER;
35          try {
36              reloadMilliseconds = Long.parseLong(reloadMinutes) * MILLISECONDS_CONVERSION_MULTIPLIER;
37          }
38          catch (NumberFormatException ignored) {
39              // default to 5 minutes
40          }
41          PropertyConfigurator.configureAndWatch(settingsFile, reloadMilliseconds);
42          printClasspath();
43      }
44  
45      private static void printClasspath() {
46          StringBuffer classpath = new StringBuffer("Classpath is:\n");
47          ClassLoader classloader = Thread.currentThread().getContextClassLoader();
48          URL[] urls = ((URLClassLoader) classloader).getURLs();
49          for (int i = 0; i < urls.length; i++) {
50              classpath.append(urls[i].getFile()).append("; ");
51          }
52          Logger.getLogger(Log4jConfigurer.class).info(classpath.toString());
53      }
54  }