Package org.tamacat.log

Source Code of org.tamacat.log.LogFactory

/*
* Copyright (c) 2007, TamaCat.org
* All rights reserved.
*/
package org.tamacat.log;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.tamacat.log.impl.JDKLogger;
import org.tamacat.log.impl.Log4jDiagnosticContext;
import org.tamacat.log.impl.Log4jLogger;
import org.tamacat.log.impl.NoneDiagnosticContext;
import org.tamacat.log.impl.SimpleLogger;
import org.tamacat.util.ClassUtils;
import org.tamacat.util.PropertyUtils;

/**
* Usage:
* {@code
*   static final Log LOG = LogFactory.getLog(Target.class);
* }
*/
public class LogFactory {

    private static final String LOGGING_PROPERTIES_FILE = "logging.properties";
    private static final String KEY = "org.tamacat.log.Log";

    private static final Map<String, Log> manager = new HashMap<String, Log>();

    public synchronized static Log getLog(String categoryName) {
        Log logger = manager.get(categoryName);
        if (logger == null) {
            try {
                logger = SELF.loadLogger(categoryName);
                if (logger != null) manager.put(categoryName, logger);
            } catch (Exception e) {
                new JDKLogger(LogFactory.class.getName()).error(e.getMessage(), e);
            }
        }
        return logger;
    }
   
    public synchronized static Log getLog(Class<?> className) {
        return getLog(className.getName());
    }

    static final String LOG4J_CLASS = "org.apache.log4j.Logger";
    private LogFactory(){}
    static LogFactory SELF = new LogFactory();

    protected Log loadLogger(String name) {
        Log logger = null;
        try {
            Properties props = PropertyUtils.getProperties(LOGGING_PROPERTIES_FILE);
            if (props != null) {
                String className = props.getProperty(KEY);
                Class<?> clazz = ClassUtils.forName(className);
                logger = (Log) ClassUtils.newInstance(clazz, String[].class, name);
                if (logger != null) return logger;
            }
        } catch (Exception e) {
        }
        Class<?> loggerClass = ClassUtils.forName(LOG4J_CLASS);
        if (loggerClass != null) {
            return new Log4jLogger(name);
        } else {
            return new SimpleLogger();
        }
    }
   
    public static DiagnosticContext getDiagnosticContext(Log logger) {
      if (logger instanceof Log4jLogger) {
        return new Log4jDiagnosticContext();
      } else {
        return new NoneDiagnosticContext();
      }
    }
}
TOP

Related Classes of org.tamacat.log.LogFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.