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

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

?? patternparser.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. */package org.apache.log4j.helpers;import org.apache.log4j.helpers.LogLog;import org.apache.log4j.helpers.OptionConverter;import org.apache.log4j.helpers.AbsoluteTimeDateFormat;import org.apache.log4j.Layout;import org.apache.log4j.spi.LoggingEvent;import org.apache.log4j.spi.LocationInfo;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;// Contributors:   Nelson Minar <(nelson@monkey.org>//                 Igor E. Poteryaev <jah@mail.ru>//                 Reinhard Deschler <reinhard.deschler@web.de>/**   Most of the work of the {@link org.apache.log4j.PatternLayout} class   is delegated to the PatternParser class.   <p>It is this class that parses conversion patterns and creates   a chained list of {@link OptionConverter OptionConverters}.   @author <a href=mailto:"cakalijp@Maritz.com">James P. Cakalic</a>   @author Ceki G&uuml;lc&uuml;   @author Anders Kristensen   @since 0.8.2*/public class PatternParser {  private static final char ESCAPE_CHAR = '%';  private static final int LITERAL_STATE = 0;  private static final int CONVERTER_STATE = 1;  private static final int DOT_STATE = 3;  private static final int MIN_STATE = 4;  private static final int MAX_STATE = 5;  static final int FULL_LOCATION_CONVERTER = 1000;  static final int METHOD_LOCATION_CONVERTER = 1001;  static final int CLASS_LOCATION_CONVERTER = 1002;  static final int LINE_LOCATION_CONVERTER = 1003;  static final int FILE_LOCATION_CONVERTER = 1004;  static final int RELATIVE_TIME_CONVERTER = 2000;  static final int THREAD_CONVERTER = 2001;  static final int LEVEL_CONVERTER = 2002;  static final int NDC_CONVERTER = 2003;  static final int MESSAGE_CONVERTER = 2004;  int state;  protected StringBuffer currentLiteral = new StringBuffer(32);  protected int patternLength;  protected int i;  PatternConverter head;  PatternConverter tail;  protected FormattingInfo formattingInfo = new FormattingInfo();  protected String pattern;  public  PatternParser(String pattern) {    this.pattern = pattern;    patternLength =  pattern.length();    state = LITERAL_STATE;  }  private  void  addToList(PatternConverter pc) {    if(head == null) {      head = tail = pc;    } else {      tail.next = pc;      tail = pc;    }  }  protected  String extractOption() {    if((i < patternLength) && (pattern.charAt(i) == '{')) {      int end = pattern.indexOf('}', i);      if (end > i) {	String r = pattern.substring(i + 1, end);	i = end+1;	return r;      }    }    return null;  }  /**     The option is expected to be in decimal and positive. In case of     error, zero is returned.  */  protected  int extractPrecisionOption() {    String opt = extractOption();    int r = 0;    if(opt != null) {      try {	r = Integer.parseInt(opt);	if(r <= 0) {	    LogLog.error(	        "Precision option (" + opt + ") isn't a positive integer.");	    r = 0;	}      }      catch (NumberFormatException e) {	LogLog.error("Category option \""+opt+"\" not a decimal integer.", e);      }    }    return r;  }  public  PatternConverter parse() {    char c;    i = 0;    while(i < patternLength) {      c = pattern.charAt(i++);      switch(state) {      case LITERAL_STATE:        // In literal state, the last char is always a literal.        if(i == patternLength) {          currentLiteral.append(c);          continue;        }        if(c == ESCAPE_CHAR) {          // peek at the next char.          switch(pattern.charAt(i)) {          case ESCAPE_CHAR:            currentLiteral.append(c);            i++; // move pointer            break;          case 'n':            currentLiteral.append(Layout.LINE_SEP);            i++; // move pointer            break;          default:            if(currentLiteral.length() != 0) {              addToList(new LiteralPatternConverter(                                                  currentLiteral.toString()));              //LogLog.debug("Parsed LITERAL converter: \""              //           +currentLiteral+"\".");            }            currentLiteral.setLength(0);            currentLiteral.append(c); // append %            state = CONVERTER_STATE;            formattingInfo.reset();          }        }        else {          currentLiteral.append(c);        }        break;      case CONVERTER_STATE:	currentLiteral.append(c);	switch(c) {	case '-':	  formattingInfo.leftAlign = true;	  break;	case '.':	  state = DOT_STATE;	  break;	default:	  if(c >= '0' && c <= '9') {	    formattingInfo.min = c - '0';	    state = MIN_STATE;	  }	  else	    finalizeConverter(c);	} // switch	break;      case MIN_STATE:	currentLiteral.append(c);	if(c >= '0' && c <= '9')	  formattingInfo.min = formattingInfo.min*10 + (c - '0');	else if(c == '.')	  state = DOT_STATE;	else {	  finalizeConverter(c);	}	break;      case DOT_STATE:	currentLiteral.append(c);	if(c >= '0' && c <= '9') {	  formattingInfo.max = c - '0';	   state = MAX_STATE;	}	else {	  LogLog.error("Error occured in position "+i		     +".\n Was expecting digit, instead got char \""+c+"\".");	  state = LITERAL_STATE;	}	break;      case MAX_STATE:	currentLiteral.append(c);	if(c >= '0' && c <= '9')	  formattingInfo.max = formattingInfo.max*10 + (c - '0');	else {	  finalizeConverter(c);	  state = LITERAL_STATE;	}	break;      } // switch    } // while    if(currentLiteral.length() != 0) {      addToList(new LiteralPatternConverter(currentLiteral.toString()));      //LogLog.debug("Parsed LITERAL converter: \""+currentLiteral+"\".");    }    return head;  }  protected  void finalizeConverter(char c) {    PatternConverter pc = null;    switch(c) {    case 'c':      pc = new CategoryPatternConverter(formattingInfo,					extractPrecisionOption());      //LogLog.debug("CATEGORY converter.");      //formattingInfo.dump();      currentLiteral.setLength(0);      break;    case 'C':      pc = new ClassNamePatternConverter(formattingInfo,					 extractPrecisionOption());      //LogLog.debug("CLASS_NAME converter.");      //formattingInfo.dump();      currentLiteral.setLength(0);      break;    case 'd':      String dateFormatStr = AbsoluteTimeDateFormat.ISO8601_DATE_FORMAT;      DateFormat df;      String dOpt = extractOption();      if(dOpt != null)	dateFormatStr = dOpt;      if(dateFormatStr.equalsIgnoreCase(                                    AbsoluteTimeDateFormat.ISO8601_DATE_FORMAT))	df = new  ISO8601DateFormat();      else if(dateFormatStr.equalsIgnoreCase(                                   AbsoluteTimeDateFormat.ABS_TIME_DATE_FORMAT))	df = new AbsoluteTimeDateFormat();      else if(dateFormatStr.equalsIgnoreCase(                              AbsoluteTimeDateFormat.DATE_AND_TIME_DATE_FORMAT))	df = new DateTimeDateFormat();      else {	try {	  df = new SimpleDateFormat(dateFormatStr);	}	catch (IllegalArgumentException e) {	  LogLog.error("Could not instantiate SimpleDateFormat with " +		       dateFormatStr, e);	  df = (DateFormat) OptionConverter.instantiateByClassName(			           "org.apache.log4j.helpers.ISO8601DateFormat",				   DateFormat.class, null);	}      }      pc = new DatePatternConverter(formattingInfo, df);      //LogLog.debug("DATE converter {"+dateFormatStr+"}.");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产做a爰片久久毛片 | 亚洲综合久久久| 91精品国产一区二区三区| 国产成人日日夜夜| 久久成人免费网| 一区二区欧美精品| 中文字幕在线不卡一区| 亚洲精品在线电影| 欧美一区二区三区在线观看| 色偷偷成人一区二区三区91 | 国产成人精品一区二| 婷婷激情综合网| 亚洲日本在线看| 国产丝袜美腿一区二区三区| 欧美军同video69gay| 972aa.com艺术欧美| 国产精品综合视频| 蜜桃视频在线观看一区| 婷婷丁香激情综合| 亚洲精品欧美综合四区| 亚洲视频中文字幕| 国产精品福利电影一区二区三区四区| 欧美va亚洲va| 欧美成人官网二区| 91精品国产欧美一区二区成人| 色婷婷精品久久二区二区蜜臂av| 懂色av中文一区二区三区| 久久99国产精品久久99| 免费日本视频一区| 日本欧美一区二区在线观看| 三级久久三级久久| 亚洲成人自拍网| 亚洲成av人片在www色猫咪| 亚洲伦理在线精品| 一二三区精品视频| 亚洲主播在线播放| 一区二区成人在线观看| 夜夜亚洲天天久久| 亚洲成人免费在线| 日韩av中文在线观看| 日本中文字幕一区二区视频| 日韩高清不卡一区二区三区| 日韩成人免费在线| 美国三级日本三级久久99| 精品无人码麻豆乱码1区2区| 国产一区欧美一区| 成人精品视频一区| 91极品美女在线| 欧美人xxxx| 日韩片之四级片| 久久先锋影音av鲁色资源| 欧美经典一区二区三区| 五月婷婷久久丁香| 免费高清在线视频一区·| 久久99国产精品免费| 国产剧情一区在线| 91麻豆swag| 欧美精品粉嫩高潮一区二区| 欧美电视剧免费全集观看| 国产人妖乱国产精品人妖| 国产精品久久久久三级| 亚洲久草在线视频| 日韩精品五月天| 韩国女主播成人在线| 成人午夜视频在线| 欧美视频一区二区三区| 精品国产伦一区二区三区观看方式 | 久久久久国产精品免费免费搜索| 国产午夜精品一区二区三区嫩草| 亚洲欧洲美洲综合色网| 亚洲午夜激情av| 日本韩国一区二区三区视频| 欧美日韩国产一级片| 欧美精品一区二区久久久| 中文字幕在线一区免费| 亚洲不卡av一区二区三区| 国产一区二区三区观看| 日本乱人伦一区| 久久综合色8888| 一区二区三区四区亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产福利不卡视频| 欧美日韩午夜在线视频| 久久久激情视频| 亚洲不卡一区二区三区| 高清不卡在线观看av| 制服丝袜中文字幕一区| 国产精品少妇自拍| 午夜免费欧美电影| 成人禁用看黄a在线| 欧美蜜桃一区二区三区| 国产婷婷色一区二区三区| 日日摸夜夜添夜夜添国产精品| 国产91高潮流白浆在线麻豆 | 在线观看视频一区二区欧美日韩| 精品日韩一区二区| 亚洲午夜久久久| 菠萝蜜视频在线观看一区| 精品国产电影一区二区| 亚洲最大成人网4388xx| 大胆亚洲人体视频| 精品国产乱码久久久久久久久 | 免费人成在线不卡| 色94色欧美sute亚洲线路一久 | 日韩一区二区三| 一区二区三区蜜桃| 成年人国产精品| 精品奇米国产一区二区三区| 三级欧美在线一区| 欧美午夜片在线看| 亚洲最新视频在线观看| 91捆绑美女网站| 国产精品午夜在线观看| 国内成人精品2018免费看| 欧美精品日韩精品| 亚洲成人一区在线| 欧美这里有精品| 最近日韩中文字幕| 波多野结衣中文字幕一区二区三区| 久久综合色一综合色88| 久久国产人妖系列| 日韩亚洲欧美综合| 蜜桃久久av一区| 欧美高清激情brazzers| 亚洲sss视频在线视频| 欧美性色黄大片| 亚洲国产综合人成综合网站| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品视频yy9299一区| 成人小视频在线观看| 国产精品午夜春色av| 岛国av在线一区| 国产精品久久久久影院| 不卡一卡二卡三乱码免费网站| 欧美激情一区二区三区全黄| 国产69精品久久99不卡| 亚洲国产成人在线| 成人国产精品免费网站| 自拍偷拍国产精品| 色综合久久中文综合久久牛| 亚洲另类在线视频| 欧美日韩免费在线视频| 午夜一区二区三区在线观看| 欧美老肥妇做.爰bbww视频| 视频一区视频二区中文字幕| 日韩欧美国产一二三区| 精品一区二区在线看| 久久久久久久一区| 成人黄色国产精品网站大全在线免费观看 | 91啪亚洲精品| 亚洲午夜在线视频| 51久久夜色精品国产麻豆| 免播放器亚洲一区| 久久影院电视剧免费观看| 国产91精品久久久久久久网曝门 | 91精品中文字幕一区二区三区| 日韩专区欧美专区| 欧美大片免费久久精品三p| 国产麻豆精品95视频| 国产精品久久久久毛片软件| 在线看国产一区二区| 热久久久久久久| 国产欧美一二三区| 色视频一区二区| 美国欧美日韩国产在线播放| 中文字幕乱码一区二区免费| 在线中文字幕不卡| 激情国产一区二区| 椎名由奈av一区二区三区| 欧美日韩激情一区二区三区| 国内一区二区视频| 曰韩精品一区二区| 精品少妇一区二区三区| 99久久99久久免费精品蜜臀| 人人狠狠综合久久亚洲| 国产精品看片你懂得| 欧美剧情电影在线观看完整版免费励志电影| 久久成人久久爱| 亚洲人午夜精品天堂一二香蕉| 3d动漫精品啪啪1区2区免费| 成人美女视频在线看| 日韩av一级电影| 中文字幕一区二区三| 日韩欧美一级在线播放| 91免费版在线| 国产一区久久久| 亚洲444eee在线观看| 中文字幕国产一区二区| 91麻豆精品国产自产在线观看一区 | 欧美综合亚洲图片综合区| 国产一区三区三区| 午夜电影网亚洲视频| 不卡一卡二卡三乱码免费网站| 久久精品噜噜噜成人av农村| 一区二区三区日韩| 国产精品国产自产拍高清av王其| 日韩你懂的在线播放| 欧美日韩视频不卡| 91免费观看视频| www.亚洲免费av|