Package org.fto.jthink.log

Source Code of org.fto.jthink.log.LogManager

/*
* LogManager.java 2005-7-24
*
* 版权所有: 自由思考组织(FTO)软件团队 2000-2005, 保留所有权利.
* 这个软件是自由思考组织(FTO)软件团队开发的,如果要使用这个软件,请首先阅读并接受许可协议。
*
* Copyright 2000-2005 FTO Software Team, Inc. All Rights Reserved.
* This software is the proprietary information of FTO Software Team, Inc.
* Use is subject to license terms.
*
* FTO站点:http://www.free-think.org
*/
package org.fto.jthink.log;

import org.fto.jthink.config.Configuration;
import org.fto.jthink.util.ReflectHelper;

/**
* 日志管理器。此类是日志处理的关键入口,在应用系统启动时,
* 须调用configure()方法来初始化日志管理器。
*
* <pre>
*  在应用中定义日志处理接口:
*    private static final Logger logger = LogManager.getLogger(ConcreteType.class);
*  //ConcreteType为具体的类型
* </pre>
*
* <p><pre><b>
* 历史更新记录:</b>
* 2005-07-24  创建此类型
* </pre></p>
*
*
* @author   wenjian
* @version  1.0
* @since    JThink 1.0
*
*/
public class LogManager {
 
  /* 当前日志工厂 */
  private static LogFactory logFactory;

  /**
   * 设置日志工厂
   *
   * @param factory 日志工厂
   */
  public static void setLogFactory(LogFactory factory){
    logFactory = factory;
  }

  /**
   * 返回日志工厂, 如果没有设置日志工厂,将创建一个默认的日志处理工厂
   *
   * @return 日志工厂
   */
  public static LogFactory getLogFactory(){
    if(logFactory!=null){
      return logFactory;
    }
    Configuration config = null;
    try{
      config = Configuration.getConfiguration();
    }catch(Exception e){}
    if(config==null){
      return new DefaultLogFactory(null);
    }else{
      configure(config);
      return logFactory;
    }
  }

  /**
   * 返回日志处理器
   *
   * @param clazz 要使用此日志处理器的类型
   *
   * @return 日志处理器
   */
  public static Logger getLogger(Class clazz){
    return getLogFactory().create(clazz);
  }

  /**
   * 返回日志处理器
   *
   * @param name 要使用此日志处理器的类型名称
   *
   * @return 日志处理器
   */
  public static Logger getLogger(String name){
    return getLogFactory().create(name);
  }
 
  /**
   * 从配置文件中查找并创建日志工厂
   *
   * @param config
   */
  public static void configure(Configuration config){
    String factoryClass = config.getConfig().getChild("log-manager").getChildText("factory-class");
    LogFactory factory = (LogFactory)ReflectHelper.newInstance(ReflectHelper.forName(factoryClass),
        new Class[]{Configuration.class},
        new Object[]{config});
    setLogFactory(factory);
  }
 
 
}
TOP

Related Classes of org.fto.jthink.log.LogManager

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.