blob: 37a41b0590912e741fabeb367dfab6a0b2401503 [file] [log] [blame]
/* $Id: Logging.java 988245 2010-08-23 18:39:35Z kwright $ */
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.manifoldcf.core.system;
import org.apache.manifoldcf.core.interfaces.*;
import java.util.*;
import java.io.*;
import org.apache.log4j.*;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.Layout.*;
import org.apache.log4j.helpers.DateLayout;
import org.apache.log4j.helpers.DateTimeDateFormat;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.PropertyConfigurator;
/** This class furnishes the logging environment for the JSKW application.
*/
public class Logging
{
public static final String _rcsid = "@(#)$Id: Logging.java 988245 2010-08-23 18:39:35Z kwright $";
// Public logger objects. Initialized by initializeLoggers() method.
public static Logger root = null;
public static Logger misc = null;
public static Logger db = null;
public static Logger lock = null;
public static Logger cache = null;
public static Logger keystore = null;
public static Logger perf = null;
public static Logger diagnostics = null;
private static HashMap loggerTable = null;
private static HashMap logLevelMap = null;
/** Initialize logger setup.
*/
public static synchronized void initializeLoggingSystem(File logConfigFile)
{
if (logLevelMap != null)
return;
// configuration: log map hash
logLevelMap = new HashMap();
logLevelMap.put("OFF", Level.OFF);
logLevelMap.put("FATAL", Level.FATAL);
logLevelMap.put("WARN", Level.WARN);
logLevelMap.put("ERROR", Level.ERROR);
logLevelMap.put("INFO", Level.INFO);
logLevelMap.put("DEBUG", Level.DEBUG);
logLevelMap.put("ALL", Level.ALL);
loggerTable = new HashMap();
// Initialize the logger
PropertyConfigurator.configure(logConfigFile.toString());
//System.err.println("ManifoldCF logger setup complete");
}
/** Set up loggers used by core package.
*/
public static synchronized void initializeLoggers()
{
// package loggers
if (misc != null)
return;
root = newLogger("org.apache.manifoldcf.root");
misc = newLogger("org.apache.manifoldcf.misc");
db = newLogger("org.apache.manifoldcf.db");
lock = newLogger("org.apache.manifoldcf.lock");
cache = newLogger("org.apache.manifoldcf.cache");
keystore = newLogger("org.apache.manifoldcf.keystore");
perf = newLogger("org.apache.manifoldcf.perf");
diagnostics = newLogger("org.apache.manifoldcf.diagnostics");
}
/** Reset all loggers
*/
public static void setLogLevels()
{
// System.out.println("Setting log levels @ " + new Date().toString());
Iterator it = loggerTable.entrySet().iterator();
while (it.hasNext())
{
Map.Entry e = (Map.Entry)it.next();
Logger logger = (Logger)e.getValue();
// logger name;
String loggername = (String)e.getKey();
// logger level
String level = ManifoldCF.getProperty(loggername);
Level loglevel = null;
if (level != null && level.length() > 0)
{
loglevel = (Level)logLevelMap.get(level);
}
if (loglevel==null)
{
loglevel = Level.WARN;
}
try
{
logger.setLevel(loglevel);
}
catch (Exception ex)
{
System.err.println("Unable to set log level " + level +
" on logger " + loggername);
ex.printStackTrace();
}
}
}
/** Get a logger given a logger name.
*@param loggerName is the logger name.
*@return the logger.
*/
public static final Logger getLogger(String loggerName)
{
return (Logger)loggerTable.get(loggerName);
}
/** Register a new logger.
*@param s is the logger name.
*@return the new logger.
*/
public static final Logger newLogger(String s)
{
Logger l = Logger.getLogger(s);
loggerTable.put(s, l);
return l;
}
}