⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jbpmlogfactory.java

📁 一个java工作流引擎
💻 JAVA
字号:
package org.jbpm.util.log;

import java.util.*;
import org.apache.commons.logging.*;

public class JbpmLogFactory extends LogFactory {
  
  static {
    System.setProperty( "org.apache.commons.logging.LogFactory", "org.jbpm.util.log.JbpmLogFactory" );
    LogFactory.newFactory( "org.jbpm.util.log.JbpmLogFactory", JbpmLogFactory.class.getClassLoader() );
    LogFactory logFactory = LogFactory.getFactory();  
    logFactory.setAttribute( "org.apache.commons.logging.Log", "org.jbpm.util.log.JbpmLog" );
  }
  
  private Map logs = null;
  private Map attributes = null;

  public JbpmLogFactory() {
    logs = new HashMap();
    attributes = new HashMap();
  }

  public static void initJbpmLogging( Properties logProperties ) {
    String defaultLogLevel = logProperties.getProperty( "jbpm.log.default" );
    if ( defaultLogLevel != null ) {
      setDefaultLevel( Level.getInstance(defaultLogLevel) );
    } else {
      setDefaultLevel( Level.INFO );
    }
    
    Iterator iter = logProperties.entrySet().iterator();
    while (iter.hasNext()) {
      Map.Entry entry = (Map.Entry) iter.next();
      String key = (String)entry.getKey();
      String value = (String)entry.getValue();
      
      if ( key.startsWith( "jbpm.log.package." ) ) {
        setLevel( key.substring(17), Level.getInstance( value ) );
      }
    }
  }
  
  public static void setDefaultLevel( Level defaultLevel ) {
    LogFactory logFactory = LogFactory.getFactory();  
    logFactory.setAttribute( "default.level", defaultLevel );
  }

  public static void setLevel( String packageName, Level level ) {
    LogFactory logFactory = LogFactory.getFactory();  
    logFactory.setAttribute( "level." + packageName , level );
  }
  
  public Map getLogs() {
    return logs;
  }
  
  public Log getInstance(Class clazz) throws LogConfigurationException {
    return getInstance( clazz.getName() );
  }

  public Log getInstance(String name) throws LogConfigurationException {
    JbpmLog log = (JbpmLog) logs.get( name );
    if ( log == null ) {
      log = new JbpmLog( name );
      logs.put( name, log );
      
      // setting the log-level
      boolean matchFound = false;
      Iterator iter = attributes.keySet().iterator();
			while ( ( iter.hasNext() )
              && ( ! matchFound ) ){
				String key = (String) iter.next();
				if ( key.startsWith( "level." ) ) {
          String packageName = key.substring( 6 );
          if ( name.startsWith( packageName ) ) {
            log.setLevel( (Level) attributes.get( key ) );
            matchFound = true;
          }
        }
			}

      if ( !matchFound ) {
        log.setLevel( (Level) attributes.get( "default.level" ) );
      }
    }
    return log;
  }

  public void release() {
    logs = null;
    attributes = null;
  }

  public String[] getAttributeNames() {
    return (String[]) attributes.keySet().toArray( new String[ attributes.size() ] );
  }

  public Object getAttribute(String key) {
    return attributes.get( key );
  }

  public void removeAttribute(String key) {
    attributes.remove(key);
  }

  public void setAttribute(String key, Object value) {
    attributes.put( key, value );

    if ( key.startsWith( "level." ) ) {
      String packageName = key.substring( 6 );

      Iterator iter = logs.values().iterator();
      while (iter.hasNext()) {
        JbpmLog log = (JbpmLog) iter.next();
        if ( log.getName().startsWith( packageName ) ) {
          log.setLevel( (Level) attributes.get( key ) );
        }
      }
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -