亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hierarchy.java

?? apache的log4j源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * 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. */// WARNING This class MUST not have references to the Category or// WARNING RootCategory classes in its static initiliazation neither// WARNING directly nor indirectly.// Contributors://                Luke Blanshard <luke@quiq.com>//                Mario Schomburg - IBM Global Services/Germany//                Anders Kristensen//                Igor Poteryaevpackage org.apache.log4j;import java.util.Hashtable;import java.util.Enumeration;import java.util.Vector;import org.apache.log4j.spi.LoggerFactory;import org.apache.log4j.spi.HierarchyEventListener;import org.apache.log4j.spi.LoggerRepository;import org.apache.log4j.spi.RendererSupport;import org.apache.log4j.Appender;import org.apache.log4j.or.RendererMap;import org.apache.log4j.or.ObjectRenderer;import org.apache.log4j.helpers.LogLog;/**   This class is specialized in retrieving loggers by name and also   maintaining the logger hierarchy.   <p><em>The casual user does not have to deal with this class   directly.</em>   <p>The structure of the logger hierarchy is maintained by the   {@link #getLogger} method. The hierarchy is such that children link   to their parent but parents do not have any pointers to their   children. Moreover, loggers can be instantiated in any order, in   particular descendant before ancestor.   <p>In case a descendant is created before a particular ancestor,   then it creates a provision node for the ancestor and adds itself   to the provision node. Other descendants of the same ancestor add   themselves to the previously created provision node.   @author Ceki G&uuml;lc&uuml;*/public class Hierarchy implements LoggerRepository, RendererSupport {  private LoggerFactory defaultFactory;  private Vector listeners;  Hashtable ht;  Logger root;  RendererMap rendererMap;  int thresholdInt;  Level threshold;  boolean emittedNoAppenderWarning = false;  boolean emittedNoResourceBundleWarning = false;  /**     Create a new logger hierarchy.     @param root The root of the new hierarchy.   */  public  Hierarchy(Logger root) {    ht = new Hashtable();    listeners = new Vector(1);    this.root = root;    // Enable all level levels by default.    setThreshold(Level.ALL);    this.root.setHierarchy(this);    rendererMap = new RendererMap();    defaultFactory = new DefaultCategoryFactory();  }  /**     Add an object renderer for a specific class.   */  public  void addRenderer(Class classToRender, ObjectRenderer or) {    rendererMap.put(classToRender, or);  }  public  void addHierarchyEventListener(HierarchyEventListener listener) {    if(listeners.contains(listener)) {      LogLog.warn("Ignoring attempt to add an existent listener.");    } else {      listeners.addElement(listener);    }  }  /**     This call will clear all logger definitions from the internal     hashtable. Invoking this method will irrevocably mess up the     logger hierarchy.     <p>You should <em>really</em> know what you are doing before     invoking this method.     @since 0.9.0 */  public  void clear() {    //System.out.println("\n\nAbout to clear internal hash table.");    ht.clear();  }  public  void emitNoAppenderWarning(Category cat) {    // No appenders in hierarchy, warn user only once.    if(!this.emittedNoAppenderWarning) {      LogLog.warn("No appenders could be found for logger (" +		   cat.getName() + ").");      LogLog.warn("Please initialize the log4j system properly.");      this.emittedNoAppenderWarning = true;    }  }  /**     Check if the named logger exists in the hierarchy. If so return     its reference, otherwise returns <code>null</code>.     @param name The name of the logger to search for.  */  public  Logger exists(String name) {    Object o = ht.get(new CategoryKey(name));    if(o instanceof Logger) {      return (Logger) o;    } else {      return null;    }  }  /**     The string form of {@link #setThreshold(Level)}.  */  public  void setThreshold(String levelStr) {    Level l = (Level) Level.toLevel(levelStr, null);    if(l != null) {      setThreshold(l);    } else {      LogLog.warn("Could not convert ["+levelStr+"] to Level.");    }  }  /**     Enable logging for logging requests with level <code>l</code> or     higher. By default all levels are enabled.     @param l The minimum level for which logging requests are sent to     their appenders.  */  public  void setThreshold(Level l) {    if(l != null) {      thresholdInt = l.level;      threshold = l;    }  }  public  void fireAddAppenderEvent(Category logger, Appender appender) {    if(listeners != null) {      int size = listeners.size();      HierarchyEventListener listener;      for(int i = 0; i < size; i++) {	listener = (HierarchyEventListener) listeners.elementAt(i);	listener.addAppenderEvent(logger, appender);      }    }  }  void fireRemoveAppenderEvent(Category logger, Appender appender) {    if(listeners != null) {      int size = listeners.size();      HierarchyEventListener listener;      for(int i = 0; i < size; i++) {	listener = (HierarchyEventListener) listeners.elementAt(i);	listener.removeAppenderEvent(logger, appender);      }    }  }  /**     Returns a {@link Level} representation of the <code>enable</code>     state.     @since 1.2 */  public  Level getThreshold() {    return threshold;  }  /**     Returns an integer representation of the this repository's     threshold.     @since 1.2 */  //public  //int getThresholdInt() {  //  return thresholdInt;  //}  /**     Return a new logger instance named as the first parameter using     the default factory.     <p>If a logger of that name already exists, then it will be     returned.  Otherwise, a new logger will be instantiated and     then linked with its existing ancestors as well as children.     @param name The name of the logger to retrieve. */  public  Logger getLogger(String name) {    return getLogger(name, defaultFactory);  } /**     Return a new logger instance named as the first parameter using     <code>factory</code>.     <p>If a logger of that name already exists, then it will be     returned.  Otherwise, a new logger will be instantiated by the     <code>factory</code> parameter and linked with its existing     ancestors as well as children.     @param name The name of the logger to retrieve.     @param factory The factory that will make the new logger instance. */  public  Logger getLogger(String name, LoggerFactory factory) {    //System.out.println("getInstance("+name+") called.");    CategoryKey key = new CategoryKey(name);    // Synchronize to prevent write conflicts. Read conflicts (in    // getChainedLevel method) are possible only if variable    // assignments are non-atomic.    Logger logger;    synchronized(ht) {      Object o = ht.get(key);      if(o == null) {	logger = factory.makeNewLoggerInstance(name);	logger.setHierarchy(this);	ht.put(key, logger);	updateParents(logger);	return logger;      } else if(o instanceof Logger) {	return (Logger) o;      } else if (o instanceof ProvisionNode) {	//System.out.println("("+name+") ht.get(this) returned ProvisionNode");	logger = factory.makeNewLoggerInstance(name);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品无码三级在线观看视频| 色老综合老女人久久久| 91亚洲大成网污www| 欧美一级视频精品观看| 成人欧美一区二区三区在线播放| 日本欧美肥老太交大片| 91美女在线观看| 欧美国产日产图区| 另类小说视频一区二区| 欧美三级午夜理伦三级中视频| 中文一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 午夜不卡av在线| 一本色道久久综合狠狠躁的推荐| 久久―日本道色综合久久| 午夜精品成人在线视频| 91久久久免费一区二区| 亚洲色图在线看| 不卡视频一二三四| 国产精品伦一区| 国产成人av电影在线观看| 欧美成人a视频| 美女网站视频久久| 日韩亚洲欧美一区二区三区| 亚洲成a人片在线不卡一二三区| 91原创在线视频| 亚洲欧美激情插 | 精品一区精品二区高清| 91精品国产综合久久久久久| 亚洲大片免费看| 欧美无砖专区一中文字| 亚洲一区二区三区三| 91国偷自产一区二区三区成为亚洲经典 | 久久99精品国产91久久来源| 91精品国产乱| 精品一区中文字幕| 精品福利一区二区三区| 黄色日韩网站视频| 26uuu欧美| 国产一区二区三区四| 国产日产欧产精品推荐色| 成人av在线资源| 伊人开心综合网| 欧美巨大另类极品videosbest | 91猫先生在线| 亚洲综合视频在线观看| 91精品国产aⅴ一区二区| 极品少妇xxxx偷拍精品少妇| 国产亚洲女人久久久久毛片| 岛国精品在线观看| 一区二区久久久久久| 欧美一区二区网站| 国产激情一区二区三区四区| 亚洲欧美欧美一区二区三区| 欧美精品一卡二卡| 国产精品77777竹菊影视小说| 中文字幕综合网| 欧美一区二区三区在线电影| 经典三级在线一区| 亚洲人成7777| 日韩一区和二区| 成人免费视频一区| 亚洲高清在线精品| 国产清纯美女被跳蛋高潮一区二区久久w| 成人在线一区二区三区| 亚洲精品免费在线观看| 91精品国产综合久久精品app | 久久网这里都是精品| 99vv1com这只有精品| 日韩电影在线观看网站| 日本一区二区在线不卡| 51午夜精品国产| av激情亚洲男人天堂| 麻豆成人av在线| 尤物在线观看一区| 国产日韩欧美一区二区三区乱码| 欧美日本精品一区二区三区| 一本到不卡免费一区二区| 日本亚洲一区二区| 国产精品久久久久影视| 欧美一区二区三区视频在线| 91在线视频播放| 韩国三级中文字幕hd久久精品| 亚洲精品欧美激情| 国产精品伦理一区二区| 日韩欧美国产综合| 在线看国产一区| www.亚洲在线| 国产剧情一区二区| 久久黄色级2电影| 丝袜诱惑制服诱惑色一区在线观看 | 午夜激情一区二区| 亚洲欧美国产毛片在线| 亚洲国产精品激情在线观看| 欧美日韩国产精品成人| 91在线无精精品入口| 国产成人啪免费观看软件| 美女精品自拍一二三四| 午夜激情一区二区| 亚洲综合免费观看高清完整版在线 | 一区二区三区中文字幕精品精品| 欧美韩日一区二区三区四区| 日韩一区二区免费在线观看| 欧美日韩在线播放三区四区| 91影院在线观看| 91在线播放网址| 色综合天天做天天爱| 9人人澡人人爽人人精品| 成人在线综合网| 成人av免费在线播放| 成人高清视频免费观看| 国产精品一区二区果冻传媒| 精久久久久久久久久久| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩精品一区二区三区中文精品 | 国产精品成人免费精品自在线观看| 亚洲精品在线免费观看视频| 日韩免费视频一区| 精品久久五月天| 国产欧美一区二区三区网站| 国产亚洲精品超碰| 国产精品久久影院| 亚洲欧美激情视频在线观看一区二区三区| 国产精品三级在线观看| 亚洲三级在线观看| 亚洲国产视频a| 免费在线观看精品| 国产aⅴ精品一区二区三区色成熟| 国产精品自产自拍| 99re这里只有精品首页| 欧美日韩综合在线免费观看| 欧美日本在线一区| 久久亚洲欧美国产精品乐播| 亚洲精品第一国产综合野| 综合电影一区二区三区| 中文字幕在线一区免费| 亚洲精品视频在线看| 午夜视频一区二区三区| 精品一区二区免费视频| www.日本不卡| 在线成人免费观看| 国产日韩欧美亚洲| 亚洲狠狠爱一区二区三区| 狠狠色丁香久久婷婷综| 成人中文字幕合集| 欧美喷潮久久久xxxxx| 欧美成人a∨高清免费观看| 国产精品久久久一本精品 | 欧美三级午夜理伦三级中视频| 欧美一区二区成人| 国产精品久久久久aaaa樱花| 天天综合色天天综合| 国产成人精品免费视频网站| 91国产福利在线| 久久久久国色av免费看影院| 亚洲精品欧美在线| 国产成人激情av| 91精品国产综合久久精品图片| 国产精品白丝在线| 久久99精品久久久久久久久久久久 | 欧美一二三区在线观看| 自拍偷拍国产亚洲| 国产自产2019最新不卡| 欧美日韩不卡一区二区| 日本一区二区三区电影| 五月激情综合色| 97久久久精品综合88久久| 欧美大片一区二区三区| 午夜欧美在线一二页| 成人av免费网站| 久久毛片高清国产| 日韩电影在线免费| 欧美天天综合网| 综合激情成人伊人| 成人不卡免费av| 国产日韩欧美激情| 韩国午夜理伦三级不卡影院| 5566中文字幕一区二区电影 | 国产精品理论在线观看| 极品美女销魂一区二区三区| 欧美日韩精品福利| 一区二区三区四区乱视频| 懂色av一区二区三区蜜臀| 亚洲精品在线三区| 久久91精品国产91久久小草| 欧美日韩国产首页| 亚洲va天堂va国产va久| 色菇凉天天综合网| 亚洲免费视频中文字幕| www.av亚洲| 国产精品久久久久久久第一福利| 国产成人精品综合在线观看 | 一区二区三区四区中文字幕| 91蝌蚪porny成人天涯| 国产精品久久毛片a| 成人av动漫网站| 国产精品毛片无遮挡高清| 成人精品亚洲人成在线| 国产精品久久一卡二卡| 色综合久久综合中文综合网|