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

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

?? appenderskeleton.java

?? apache的log4j源碼
?? JAVA
字號:
/* * 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. */package org.apache.log4j;import org.apache.log4j.Layout;import org.apache.log4j.spi.Filter;import org.apache.log4j.spi.ErrorHandler;import org.apache.log4j.spi.OptionHandler;import org.apache.log4j.spi.LoggingEvent;import org.apache.log4j.helpers.OnlyOnceErrorHandler;import org.apache.log4j.helpers.LogLog;/**  * Abstract superclass of the other appenders in the package. *   *  This class provides the code for common functionality, such as *  support for threshold filtering and support for general filters. * * @since 0.8.1 * @author Ceki G&uuml;lc&uuml;  * */public abstract class AppenderSkeleton implements Appender, OptionHandler {  /** The layout variable does not need to be set if the appender      implementation has its own layout. */  protected Layout layout;  /** Appenders are named. */  protected String name;  /**     There is no level threshold filtering by default.  */  protected Priority threshold;  /**       It is assumed and enforced that errorHandler is never null.  */  protected ErrorHandler errorHandler = new OnlyOnceErrorHandler();  /** The first filter in the filter chain. Set to <code>null</code>      initially. */  protected Filter headFilter;  /** The last filter in the filter chain. */  protected Filter tailFilter;  /**     Is this appender closed?    */  protected boolean closed = false;    /**     * Create new instance.     */    public AppenderSkeleton() {        super();    }    /**     * Create new instance.     * Provided for compatibility with log4j 1.3.     *     * @param isActive true if appender is ready for use upon construction.     *                 Not used in log4j 1.2.x.     * @since 1.2.15     */    protected AppenderSkeleton(final boolean isActive) {        super();    }  /**     Derived appenders should override this method if option structure     requires it.  */  public  void activateOptions() {  }  /**     Add a filter to end of the filter list.     @since 0.9.0   */  public  void addFilter(Filter newFilter) {    if(headFilter == null) {      headFilter = tailFilter = newFilter;    } else {      tailFilter.setNext(newFilter);      tailFilter = newFilter;        }  }  /**     Subclasses of <code>AppenderSkeleton</code> should implement this     method to perform actual logging. See also {@link #doAppend     AppenderSkeleton.doAppend} method.     @since 0.9.0  */  abstract  protected  void append(LoggingEvent event);  /**     Clear the filters chain.          @since 0.9.0 */  public  void clearFilters() {    headFilter = tailFilter = null;  }  /**     Finalize this appender by calling the derived class'     <code>close</code> method.     @since 0.8.4 */  public  void finalize() {    // An appender might be closed then garbage collected. There is no    // point in closing twice.    if(this.closed)       return;    LogLog.debug("Finalizing appender named ["+name+"].");    close();  }  /**       Return the currently set {@link ErrorHandler} for this      Appender.        @since 0.9.0 */  public  ErrorHandler getErrorHandler() {    return this.errorHandler;  }  /**     Returns the head Filter.          @since 1.1  */  public  Filter getFilter() {    return headFilter;  }  /**       Return the first filter in the filter chain for this      Appender. The return value may be <code>null</code> if no is      filter is set.        */  public  final  Filter getFirstFilter() {    return headFilter;  }  /**     Returns the layout of this appender. The value may be null.  */  public  Layout getLayout() {    return layout;  }  /**     Returns the name of this FileAppender.   */  public  final  String getName() {    return this.name;  }  /**     Returns this appenders threshold level. See the {@link     #setThreshold} method for the meaning of this option.          @since 1.1 */  public  Priority getThreshold() {    return threshold;  }  /**     Check whether the message level is below the appender's     threshold. If there is no threshold set, then the return value is     always <code>true</code>.  */  public  boolean isAsSevereAsThreshold(Priority priority) {    return ((threshold == null) || priority.isGreaterOrEqual(threshold));  }  /**    * This method performs threshold checks and invokes filters before    * delegating actual logging to the subclasses specific {@link    * AppenderSkeleton#append} method.    * */  public  synchronized   void doAppend(LoggingEvent event) {    if(closed) {      LogLog.error("Attempted to append to closed appender named ["+name+"].");      return;    }        if(!isAsSevereAsThreshold(event.getLevel())) {      return;    }    Filter f = this.headFilter;        FILTER_LOOP:    while(f != null) {      switch(f.decide(event)) {      case Filter.DENY: return;      case Filter.ACCEPT: break FILTER_LOOP;      case Filter.NEUTRAL: f = f.getNext();      }    }        this.append(event);      }  /**       Set the {@link ErrorHandler} for this Appender.      @since 0.9.0  */  public  synchronized  void setErrorHandler(ErrorHandler eh) {    if(eh == null) {      // We do not throw exception here since the cause is probably a      // bad config file.      LogLog.warn("You have tried to set a null error-handler.");    } else {      this.errorHandler = eh;    }  }  /**     Set the layout for this appender. Note that some appenders have     their own (fixed) layouts or do not use one. For example, the     {@link org.apache.log4j.net.SocketAppender} ignores the layout set     here.   */  public  void setLayout(Layout layout) {    this.layout = layout;  }    /**     Set the name of this Appender.   */  public  void setName(String name) {    this.name = name;  }  /**     Set the threshold level. All log events with lower level     than the threshold level are ignored by the appender.          <p>In configuration files this option is specified by setting the     value of the <b>Threshold</b> option to a level     string, such as "DEBUG", "INFO" and so on.          @since 0.8.3 */  public  void setThreshold(Priority threshold) {    this.threshold = threshold;  }  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区免费看| 日韩av电影一区| 激情六月婷婷综合| 在线观看国产日韩| 中文字幕精品一区| 麻豆精品在线视频| 欧美色综合久久| 中文字幕一区三区| 国产美女主播视频一区| 欧美一区二区三区在线电影| 亚洲激情欧美激情| 成人av影院在线| 国产亚洲一区二区三区在线观看 | 精品国产伦理网| 午夜在线成人av| 色婷婷综合久久| 中文字幕不卡在线| 国产成人在线免费| 日韩精品一区国产麻豆| 无码av免费一区二区三区试看 | 国产一区二区三区香蕉| 欧美一区二区视频在线观看 | 日韩高清中文字幕一区| 欧美性xxxxxx少妇| 一区二区三区中文在线观看| 成人福利在线看| 日本一区二区三区在线不卡 | 亚洲激情第一区| av中文字幕不卡| 中文在线一区二区| 国产99久久精品| 国产日韩高清在线| 国产成人福利片| 欧美激情在线看| 日韩一区二区在线观看视频| 亚洲靠逼com| 国产一区二区三区免费在线观看| 91麻豆.com| 亚洲天堂2014| 成人福利电影精品一区二区在线观看| 久久久久久99久久久精品网站| 国产自产高清不卡| 久久久精品中文字幕麻豆发布| 国产麻豆视频精品| 国产欧美视频一区二区| 福利一区福利二区| 中文字幕+乱码+中文字幕一区| 成人免费毛片高清视频| 国产精品美女久久久久aⅴ| 成人黄色在线看| 日韩伦理免费电影| 日本福利一区二区| 亚洲大片免费看| 日韩一级在线观看| 国产一区二区在线视频| 中文字幕精品三区| 91丨porny丨在线| 亚洲一级在线观看| 欧美福利视频导航| 麻豆国产一区二区| 久久精品一二三| 99视频一区二区三区| 一区二区高清免费观看影视大全| 欧美午夜电影网| 日本欧美久久久久免费播放网| 精品91自产拍在线观看一区| 国产精品69毛片高清亚洲| 国产精品久久久久四虎| 欧美中文字幕久久| 毛片不卡一区二区| 国产无一区二区| 色婷婷综合在线| 视频在线观看国产精品| 久久欧美中文字幕| av福利精品导航| 五月激情综合网| 久久视频一区二区| 91麻豆福利精品推荐| 天堂久久久久va久久久久| 亚洲精品在线三区| 99久久免费视频.com| 五月综合激情婷婷六月色窝| 久久久精品天堂| 在线观看日韩电影| 精品一区二区影视| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产午夜精品理论片a级大结局 | 成人手机在线视频| 亚洲一区二区高清| 欧美va在线播放| 91女人视频在线观看| 日本美女一区二区三区| 国产精品五月天| 欧美日韩国产bt| 国产a级毛片一区| 亚洲国产视频一区二区| 国产亚洲精品资源在线26u| 在线一区二区视频| 国产精品亚洲视频| 午夜亚洲福利老司机| 国产欧美一区二区三区在线看蜜臀 | 亚洲一区二区三区自拍| 久久综合资源网| 欧美性生交片4| 精品国精品国产| 亚洲成人www| 色综合色综合色综合| 秋霞午夜鲁丝一区二区老狼| 1区2区3区欧美| 精品成人一区二区三区四区| 欧美色窝79yyyycom| 成人午夜在线播放| 美美哒免费高清在线观看视频一区二区| 成人欧美一区二区三区白人| 亚洲精品在线免费观看视频| 欧美日韩亚洲高清一区二区| 成人免费黄色大片| 国内成人免费视频| 午夜精品爽啪视频| 成人欧美一区二区三区小说| 精品999在线播放| 在线观看91精品国产麻豆| 99re免费视频精品全部| 国产乱码精品1区2区3区| 日韩av高清在线观看| 一区二区三区在线观看欧美| 中文字幕av一区 二区| 日韩欧美视频在线| 欧美美女直播网站| 99久久精品国产一区二区三区 | 亚洲视频 欧洲视频| 国产免费成人在线视频| 欧美不卡一区二区三区| 制服丝袜成人动漫| 欧美日韩国产首页| 欧美午夜精品一区二区三区| 色婷婷综合久久久久中文一区二区| 这里是久久伊人| 亚洲在线观看免费视频| 久久精品久久精品| 亚洲国产精品精华液网站| 中文字幕中文字幕在线一区| 国产亚洲一区二区三区| 精品久久国产字幕高潮| 欧美一区二区三区在| 欧美丰满一区二区免费视频| 欧美中文字幕一二三区视频| 色婷婷精品大视频在线蜜桃视频| 成人动漫av在线| 成人精品鲁一区一区二区| 国产真实精品久久二三区| 精品一区二区三区不卡| 美国毛片一区二区三区| 另类小说视频一区二区| 奇米影视7777精品一区二区| 奇米影视一区二区三区| 日本不卡一区二区三区| 日韩精品91亚洲二区在线观看| 性做久久久久久久免费看| 午夜在线成人av| 午夜精品福利一区二区三区蜜桃| 香蕉加勒比综合久久| 午夜av电影一区| 日本视频中文字幕一区二区三区| 三级久久三级久久| 日本成人在线网站| 久久精品二区亚洲w码| 久久99精品久久久久久动态图 | 国产在线视视频有精品| 国产福利不卡视频| 不卡免费追剧大全电视剧网站| caoporm超碰国产精品| 91在线精品一区二区三区| 一本大道久久a久久精品综合| 色狠狠一区二区| 欧美日韩国产另类一区| 欧美一区二区视频在线观看2020| 日韩精品一区二区三区中文精品 | 日本韩国一区二区三区视频| 欧美日韩一区精品| 日韩一区二区三区在线视频| 2021久久国产精品不只是精品| 国产欧美一区二区三区网站| ...av二区三区久久精品| 一区二区三区免费| 日本中文字幕一区二区视频| 国产一区二区成人久久免费影院| 成人福利视频网站| 欧美丝袜自拍制服另类| 欧美xxxx在线观看| 国产精品免费久久久久| 亚洲成人自拍网| 久久66热偷产精品| 91在线精品一区二区| 欧美日韩一本到| 欧美精品一区二区不卡| 中文字幕亚洲精品在线观看 | 欧美韩国一区二区| 亚洲一级二级在线| 精品一区二区免费|