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

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

?? category.java

?? log4j的源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright 1999-2005 The Apache Software Foundation. *  * Licensed 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. */// Contibutors: Alex Blewitt <Alex.Blewitt@ioshq.com>//              Markus Oestreicher <oes@zurich.ibm.com>//              Frank Hoering <fhr@zurich.ibm.com>//              Nelson Minar <nelson@media.mit.edu>//              Jim Cakalic <jim_cakalic@na.biomerieux.com>//              Avy Sharell <asharell@club-internet.fr>//              Ciaran Treanor <ciaran@xelector.com>//              Jeff Turner <jeff@socialchange.net.au>//              Michael Horwitz <MHorwitz@siemens.co.za>//              Calvin Chan <calvin.chan@hic.gov.au>//              Aaron Greenhouse <aarong@cs.cmu.edu>//              Beat Meier <bmeier@infovia.com.ar>//              Colin Sampaleanu <colinml1@exis.com>package org.apache.log4j;import org.apache.log4j.spi.AppenderAttachable;import org.apache.log4j.spi.LoggingEvent;import org.apache.log4j.spi.LoggerRepository;import org.apache.log4j.helpers.NullEnumeration;import org.apache.log4j.helpers.AppenderAttachableImpl;import java.util.Enumeration;import java.util.MissingResourceException;import java.util.ResourceBundle;/**  * <font color="#AA2222"><b>This class has been deprecated and  * replaced by the {@link Logger} <em>subclass</em></b></font>. It  * will be kept around to preserve backward compatibility until mid  * 2003.  *   * <p><code>Logger</code> is a subclass of Category, i.e. it extends  * Category. In other words, a logger <em>is</em> a category. Thus,  * all operations that can be performed on a category can be  * performed on a logger. Internally, whenever log4j is asked to  * produce a Category object, it will instead produce a Logger  * object. Log4j 1.2 will <em>never</em> produce Category objects but  * only <code>Logger</code> instances. In order to preserve backward  * compatibility, methods that previously accepted category objects  * still continue to accept category objects.  *   * <p>For example, the following are all legal and will work as  * expected.  *    <pre>    &nbsp;&nbsp;&nbsp;// Deprecated form:    &nbsp;&nbsp;&nbsp;Category cat = Category.getInstance("foo.bar")       &nbsp;&nbsp;&nbsp;// Preferred form for retrieving loggers:    &nbsp;&nbsp;&nbsp;Logger logger = Logger.getLogger("foo.bar")   </pre>     *  <p>The first form is deprecated and should be avoided.  *   *  <p><b>There is absolutely no need for new client code to use or  *  refer to the <code>Category</code> class.</b> Whenever possible,  *  please avoid referring to it or using it.  *   * <p>See the <a href="../../../../manual.html">short manual</a> for an  * introduction on this class.  * <p>  * See the document entitled <a href="http://www.qos.ch/logging/preparingFor13.html">preparing  *  for log4j 1.3</a> for a more detailed discussion.  *  * @author Ceki G&uuml;lc&uuml;  * @author Anders Kristensen   */public class Category implements AppenderAttachable {  /**     The hierarchy where categories are attached to by default.  */  //static  //public  //final Hierarchy defaultHierarchy = new Hierarchy(new  //					   RootCategory(Level.DEBUG));  /**     The name of this category.  */  protected String   name;  /**     The assigned level of this category.  The     <code>level</code> variable need not be assigned a value in     which case it is inherited form the hierarchy.  */  volatile protected Level level;  /**     The parent of this category. All categories have at least one     ancestor which is the root category. */  volatile protected Category parent;  /**     The fully qualified name of the Category class. See also the     getFQCN method. */  private static final String FQCN = Category.class.getName();  protected ResourceBundle resourceBundle;  // Categories need to know what Hierarchy they are in  protected LoggerRepository repository;  AppenderAttachableImpl aai;  /** Additivity is set to true by default, that is children inherit      the appenders of their ancestors by default. If this variable is      set to <code>false</code> then the appenders found in the      ancestors of this category are not used. However, the children      of this category will inherit its appenders, unless the children      have their additivity flag set to <code>false</code> too. See      the user manual for more details. */  protected boolean additive = true;  /**     This constructor created a new <code>Category</code> instance and     sets its name.     <p>It is intended to be used by sub-classes only. You should not     create categories directly.     @param name The name of the category.  */  protected  Category(String name) {    this.name = name;  }  /**     Add <code>newAppender</code> to the list of appenders of this     Category instance.     <p>If <code>newAppender</code> is already in the list of     appenders, then it won't be added again.  */  synchronized  public  void addAppender(Appender newAppender) {    if(aai == null) {      aai = new AppenderAttachableImpl();    }    aai.addAppender(newAppender);    repository.fireAddAppenderEvent(this, newAppender);  }  /**     If <code>assertion</code> parameter is <code>false</code>, then     logs <code>msg</code> as an {@link #error(Object) error} statement.     <p>The <code>assert</code> method has been renamed to     <code>assertLog</code> because <code>assert</code> is a language     reserved word in JDK 1.4.     @param assertion     @param msg The message to print if <code>assertion</code> is     false.     @since 1.2 */  public  void assertLog(boolean assertion, String msg) {    if(!assertion)      this.error(msg);  }  /**     Call the appenders in the hierrachy starting at     <code>this</code>.  If no appenders could be found, emit a     warning.     <p>This method calls all the appenders inherited from the     hierarchy circumventing any evaluation of whether to log or not     to log the particular log request.     @param event the event to log.  */  public  void callAppenders(LoggingEvent event) {    int writes = 0;    for(Category c = this; c != null; c=c.parent) {      // Protected against simultaneous call to addAppender, removeAppender,...      synchronized(c) {	if(c.aai != null) {	  writes += c.aai.appendLoopOnAppenders(event);	}	if(!c.additive) {	  break;	}      }    }    if(writes == 0) {      repository.emitNoAppenderWarning(this);    }  }  /**     Close all attached appenders implementing the AppenderAttachable     interface.     @since 1.0  */  synchronized  void closeNestedAppenders() {    Enumeration enumeration = this.getAllAppenders();    if(enumeration != null) {      while(enumeration.hasMoreElements()) {	Appender a = (Appender) enumeration.nextElement();	if(a instanceof AppenderAttachable) {	  a.close();	}      }    }  }  /**    Log a message object with the {@link Level#DEBUG DEBUG} level.    <p>This method first checks if this category is <code>DEBUG</code>    enabled by comparing the level of this category with the {@link    Level#DEBUG DEBUG} level. If this category is    <code>DEBUG</code> enabled, then it converts the message object    (passed as parameter) to a string by invoking the appropriate    {@link org.apache.log4j.or.ObjectRenderer}. It then proceeds to call all the    registered appenders in this category and also higher in the    hierarchy depending on the value of the additivity flag.    <p><b>WARNING</b> Note that passing a {@link Throwable} to this    method will print the name of the <code>Throwable</code> but no    stack trace. To print a stack trace use the {@link #debug(Object,    Throwable)} form instead.    @param message the message object to log. */  public  void debug(Object message) {    if(repository.isDisabled(Level.DEBUG_INT))      return;    if(Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) {      forcedLog(FQCN, Level.DEBUG, message, null);    }  }  /**   Log a message object with the <code>DEBUG</code> level including   the stack trace of the {@link Throwable} <code>t</code> passed as   parameter.   <p>See {@link #debug(Object)} form for more detailed information.   @param message the message object to log.   @param t the exception to log, including its stack trace.  */  public  void debug(Object message, Throwable t) {    if(repository.isDisabled(Level.DEBUG_INT))      return;    if(Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel()))      forcedLog(FQCN, Level.DEBUG, message, t);  }  /**    Log a message object with the {@link Level#ERROR ERROR} Level.    <p>This method first checks if this category is <code>ERROR</code>    enabled by comparing the level of this category with {@link    Level#ERROR ERROR} Level. If this category is <code>ERROR</code>    enabled, then it converts the message object passed as parameter    to a string by invoking the appropriate {@link    org.apache.log4j.or.ObjectRenderer}. It proceeds to call all the    registered appenders in this category and also higher in the    hierarchy depending on the value of the additivity flag.    <p><b>WARNING</b> Note that passing a {@link Throwable} to this    method will print the name of the <code>Throwable</code> but no    stack trace. To print a stack trace use the {@link #error(Object,    Throwable)} form instead.    @param message the message object to log */  public  void error(Object message) {    if(repository.isDisabled(Level.ERROR_INT))      return;    if(Level.ERROR.isGreaterOrEqual(this.getEffectiveLevel()))      forcedLog(FQCN, Level.ERROR, message, null);  }  /**   Log a message object with the <code>ERROR</code> level including   the stack trace of the {@link Throwable} <code>t</code> passed as   parameter.   <p>See {@link #error(Object)} form for more detailed information.   @param message the message object to log.   @param t the exception to log, including its stack trace.  */  public  void error(Object message, Throwable t) {    if(repository.isDisabled(Level.ERROR_INT))      return;    if(Level.ERROR.isGreaterOrEqual(this.getEffectiveLevel()))      forcedLog(FQCN, Level.ERROR, message, t);  }  /**     If the named category exists (in the default hierarchy) then it     returns a reference to the category, otherwise it returns     <code>null</code>.     @deprecated Please use {@link LogManager#exists} instead.     @since 0.8.5 */  public  static  Logger exists(String name) {    return LogManager.exists(name);  }  /**    Log a message object with the {@link Level#FATAL FATAL} Level.    <p>This method first checks if this category is <code>FATAL</code>    enabled by comparing the level of this category with {@link    Level#FATAL FATAL} Level. If the category is <code>FATAL</code>    enabled, then it converts the message object passed as parameter    to a string by invoking the appropriate    {@link org.apache.log4j.or.ObjectRenderer}. It    proceeds to call all the registered appenders in this category and    also higher in the hierarchy depending on the value of the    additivity flag.    <p><b>WARNING</b> Note that passing a {@link Throwable} to this    method will print the name of the Throwable but no stack trace. To    print a stack trace use the {@link #fatal(Object, Throwable)} form    instead.    @param message the message object to log */  public  void fatal(Object message) {    if(repository.isDisabled(Level.FATAL_INT))      return;    if(Level.FATAL.isGreaterOrEqual(this.getEffectiveLevel()))      forcedLog(FQCN, Level.FATAL, message, null);  }  /**   Log a message object with the <code>FATAL</code> level including   the stack trace of the {@link Throwable} <code>t</code> passed as   parameter.   <p>See {@link #fatal(Object)} for more detailed information.   @param message the message object to log.   @param t the exception to log, including its stack trace.  */  public  void fatal(Object message, Throwable t) {    if(repository.isDisabled(Level.FATAL_INT))      return;    if(Level.FATAL.isGreaterOrEqual(this.getEffectiveLevel()))      forcedLog(FQCN, Level.FATAL, message, t);  }  /**     This method creates a new logging event and logs the event     without further checks.  */  protected  void forcedLog(String fqcn, Priority level, Object message, Throwable t) {    callAppenders(new LoggingEvent(fqcn, this, level, message, t));  }  /**     Get the additivity flag for this Category instance.  */  public  boolean getAdditivity() {    return additive;  }  /**     Get the appenders contained in this category as an {@link     Enumeration}. If no appenders can be found, then a {@link NullEnumeration}     is returned.     @return Enumeration An enumeration of the appenders in this category.  */  synchronized  public  Enumeration getAllAppenders() {    if(aai == null)      return NullEnumeration.getInstance();    else      return aai.getAllAppenders();  }  /**     Look for the appender named as <code>name</code>.     <p>Return the appender with that name if in the list. Return     <code>null</code> otherwise.  */  synchronized  public  Appender getAppender(String name) {     if(aai == null || name == null)      return null;     return aai.getAppender(name);  }  /**     Starting from this category, search the category hierarchy for a     non-null level and return it. Otherwise, return the level of the     root category.     <p>The Category class is designed so that this method executes as     quickly as possible.   */  public  Level getEffectiveLevel() {    for(Category c = this; c != null; c=c.parent) {      if(c.level != null)	return c.level;    }    return null; // If reached will cause an NullPointerException.  }  /**    *    * @deprecated Please use the the {@link #getEffectiveLevel} method    * instead.      * */  public  Priority getChainedPriority() {    for(Category c = this; c != null; c=c.parent) {      if(c.level != null)	return c.level;    }    return null; // If reached will cause an NullPointerException.  }  /**     Returns all the currently defined categories in the default     hierarchy as an {@link java.util.Enumeration Enumeration}.     <p>The root category is <em>not</em> included in the returned     {@link Enumeration}.     @deprecated Please use {@link LogManager#getCurrentLoggers()} instead.  */  public  static  Enumeration getCurrentCategories() {    return LogManager.getCurrentLoggers();  }  /**     Return the default Hierarchy instance.     @deprecated Please use {@link LogManager#getLoggerRepository()} instead.     @since 1.0   */  public  static  LoggerRepository getDefaultHierarchy() {    return LogManager.getLoggerRepository();  }  /**     Return the the {@link Hierarchy} where this <code>Category</code>     instance is attached.     @deprecated Please use {@link #getLoggerRepository} instead.     @since 1.1 */  public  LoggerRepository  getHierarchy() {    return repository;  }  /**     Return the the {@link LoggerRepository} where this     <code>Category</code> is attached.     @since 1.2 */  public  LoggerRepository  getLoggerRepository() {    return repository;  } /**  * @deprecated Make sure to use {@link Logger#getLogger(String)} instead.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品忘忧草| 人人爽香蕉精品| 国产免费成人在线视频| 久久综合中文字幕| 精品电影一区二区三区| 日韩西西人体444www| 91精品午夜视频| 日韩一区二区在线观看| 欧美r级在线观看| 久久综合久久99| 国产婷婷色一区二区三区| 久久蜜臀精品av| 中文字幕av一区二区三区高 | 久久精品水蜜桃av综合天堂| 亚洲高清在线视频| 亚洲制服丝袜av| 亚洲成人手机在线| 日本不卡不码高清免费观看| 激情久久久久久久久久久久久久久久| 精彩视频一区二区三区| 国产一区二区三区精品视频| 风间由美一区二区三区在线观看 | 欧美成人精品3d动漫h| 精品国产伦理网| 欧美经典三级视频一区二区三区| 国产精品美女一区二区| 亚洲精品大片www| 日韩高清在线不卡| 国产伦精品一区二区三区免费| 国产成人一级电影| 91麻豆视频网站| 欧美日韩精品一区视频| 精品国产一区二区三区四区四| 国产午夜精品福利| 夜夜爽夜夜爽精品视频| 麻豆一区二区三| 成人少妇影院yyyy| 欧美日韩免费高清一区色橹橹| 日韩视频一区二区| 国产精品美女久久久久aⅴ | 色综合中文字幕国产 | 欧美色综合天天久久综合精品| 欧美一区永久视频免费观看| 国产亚洲短视频| 亚洲一二三四在线| 国产乱码一区二区三区| 91久久精品午夜一区二区| 日韩小视频在线观看专区| 国产精品久久久久久久久免费桃花 | 国产麻豆午夜三级精品| 国产高清不卡一区| 欧美日韩在线观看一区二区 | 国产午夜精品理论片a级大结局 | 成人av网站在线观看免费| 欧美色大人视频| 国产日韩精品久久久| 午夜精品一区在线观看| 国产成人三级在线观看| 欧美日韩高清影院| 国产精品美女久久福利网站| 奇米色777欧美一区二区| 97精品电影院| 欧美成人bangbros| 亚洲午夜久久久久中文字幕久| 国产福利电影一区二区三区| 7777女厕盗摄久久久| 亚洲精品中文字幕乱码三区| 韩国精品主播一区二区在线观看| 欧美视频在线不卡| 国产精品美女一区二区| 国产一区二区网址| 91麻豆精品国产自产在线观看一区 | 国产精品自在欧美一区| 在线不卡一区二区| 亚洲你懂的在线视频| 国产露脸91国语对白| 9191成人精品久久| 亚洲精品亚洲人成人网在线播放| 丁香一区二区三区| 久久亚洲精品国产精品紫薇| 亚洲成人久久影院| 91福利区一区二区三区| 中文字幕一区二区三区不卡| 国产一区二三区| 日韩欧美一级二级三级| 日韩精品一二区| 欧美日精品一区视频| 亚洲免费观看高清完整版在线| 成人深夜在线观看| 国产人成一区二区三区影院| 国模无码大尺度一区二区三区| 欧美麻豆精品久久久久久| 亚洲一区二区在线观看视频 | 一区二区三区在线免费播放| 成人毛片在线观看| 欧美国产在线观看| 国产成人福利片| 久久久蜜桃精品| 国产一区二区三区| www国产精品av| 国产麻豆91精品| 国产日韩欧美电影| 波多野结衣91| 亚洲人成小说网站色在线| 本田岬高潮一区二区三区| 国产精品福利影院| 91在线国内视频| 亚洲欧美激情小说另类| 99久久99精品久久久久久 | 国产成人av电影在线| www久久精品| 高清国产一区二区| 国产精品久久久久婷婷| 色94色欧美sute亚洲线路二| 亚洲精品国产第一综合99久久 | 国产夜色精品一区二区av| 国产精品亚洲а∨天堂免在线| 国产亚洲成年网址在线观看| 99麻豆久久久国产精品免费优播| 中文一区一区三区高中清不卡| 成人一级片在线观看| 亚洲精品欧美综合四区| 欧美日韩国产另类不卡| 奇米精品一区二区三区在线观看| 精品av综合导航| 成人在线综合网| 一区二区三区四区蜜桃| 在线精品观看国产| 日本欧美加勒比视频| 欧美α欧美αv大片| 国产精品456| 成人免费在线观看入口| 欧美三级三级三级爽爽爽| 久久激情五月激情| 日本一区二区不卡视频| 91女神在线视频| 日韩av一区二区三区| 久久精品视频免费| 在线观看91视频| 激情成人综合网| 中文字幕视频一区二区三区久| 欧美性猛片aaaaaaa做受| 蜜桃精品在线观看| 成人免费在线观看入口| 欧美一区二区三区在线视频 | 精品国产自在久精品国产| 99久久99久久综合| 日本最新不卡在线| 国产精品欧美一区喷水| 欧美精品在线观看一区二区| 国产精品自在在线| 香蕉av福利精品导航| 国产丝袜欧美中文另类| 欧美日韩一区 二区 三区 久久精品| 国产制服丝袜一区| 亚洲综合色区另类av| 国产亚洲一二三区| 5858s免费视频成人| 成人av电影免费观看| 轻轻草成人在线| 亚洲色图在线播放| 精品国产三级电影在线观看| 色国产综合视频| 国产成人精品在线看| 亚洲成人午夜影院| 亚洲欧洲国产专区| 日韩欧美一级精品久久| 91蜜桃免费观看视频| 国产在线精品一区二区不卡了| 亚洲国产日韩精品| 国产精品久久久一区麻豆最新章节| 正在播放一区二区| 欧美性xxxxxx少妇| 成av人片一区二区| 国产美女精品在线| 日本欧洲一区二区| 亚洲第一福利一区| 亚洲人精品一区| 欧美高清一级片在线观看| 精品国产免费人成在线观看| 欧美日韩第一区日日骚| 91福利小视频| 色哟哟一区二区| 成人国产亚洲欧美成人综合网 | 99久久国产免费看| 福利一区二区在线观看| 久久99精品久久久久久动态图 | 韩国精品在线观看| 麻豆精品一区二区综合av| 亚洲国产综合人成综合网站| ...av二区三区久久精品| 欧美激情一区二区三区在线| 精品电影一区二区| 日韩一区二区麻豆国产| 7777精品伊人久久久大香线蕉超级流畅 | 日韩精彩视频在线观看| 亚洲已满18点击进入久久| 日韩美女视频19| 国产精品欧美久久久久一区二区| 久久先锋资源网|