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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? locationinfo.java

?? log4j的源碼
?? JAVA
字號:
/* * 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. */// Contributors: Mathias Rupprecht <mmathias.rupprecht@fja.com>package org.apache.log4j.spi;import java.io.StringWriter;import java.io.PrintWriter;import org.apache.log4j.helpers.LogLog;import org.apache.log4j.Layout;/**   The internal representation of caller location information.   @since 0.8.3*/public class LocationInfo implements java.io.Serializable {  /**     Caller's line number.  */  transient String lineNumber;  /**     Caller's file name.  */  transient String fileName;  /**     Caller's fully qualified class name.  */  transient String className;  /**     Caller's method name.  */  transient String methodName;  /**     All available caller information, in the format     <code>fully.qualified.classname.of.caller.methodName(Filename.java:line)</code>    */  public String fullInfo;  private static StringWriter sw = new StringWriter();  private static PrintWriter pw = new PrintWriter(sw);  /**     When location information is not available the constant     <code>NA</code> is returned. Current value of this string     constant is <b>?</b>.  */  public final static String NA = "?";  static final long serialVersionUID = -1325822038990805636L;  // Check if we are running in IBM's visual age.  static boolean inVisualAge = false;  static {    try {      Class dummy = Class.forName("com.ibm.uvm.tools.DebugSupport");      inVisualAge = true;      LogLog.debug("Detected IBM VisualAge environment.");    } catch(Throwable e) {      // nothing to do    }  }  /**     Instantiate location information based on a Throwable. We     expect the Throwable <code>t</code>, to be in the format       <pre>        java.lang.Throwable        ...          at org.apache.log4j.PatternLayout.format(PatternLayout.java:413)          at org.apache.log4j.FileAppender.doAppend(FileAppender.java:183)        at org.apache.log4j.Category.callAppenders(Category.java:131)        at org.apache.log4j.Category.log(Category.java:512)        at callers.fully.qualified.className.methodName(FileName.java:74)	...       </pre>       <p>However, we can also deal with JIT compilers that "lose" the       location information, especially between the parentheses.    */    public LocationInfo(Throwable t, String fqnOfCallingClass) {      if(t == null)	return;      String s;      // Protect against multiple access to sw.      synchronized(sw) {	t.printStackTrace(pw);	s = sw.toString();	sw.getBuffer().setLength(0);      }      //System.out.println("s is ["+s+"].");      int ibegin, iend;      // Given the current structure of the package, the line      // containing "org.apache.log4j.Category." should be printed just      // before the caller.      // This method of searching may not be fastest but it's safer      // than counting the stack depth which is not guaranteed to be      // constant across JVM implementations.      ibegin = s.lastIndexOf(fqnOfCallingClass);      if(ibegin == -1)	return;      ibegin = s.indexOf(Layout.LINE_SEP, ibegin);      if(ibegin == -1)	return;      ibegin+= Layout.LINE_SEP_LEN;      // determine end of line      iend = s.indexOf(Layout.LINE_SEP, ibegin);      if(iend == -1)	return;      // VA has a different stack trace format which doesn't      // need to skip the inital 'at'      if(!inVisualAge) {	// back up to first blank character	ibegin = s.lastIndexOf("at ", iend);	if(ibegin == -1)	  return;	// Add 3 to skip "at ";	ibegin += 3;      }      // everything between is the requested stack item      this.fullInfo = s.substring(ibegin, iend);    }    /**       Return the fully qualified class name of the caller making the       logging request.    */    public    String getClassName() {      if(fullInfo == null) return NA;      if(className == null) {	// Starting the search from '(' is safer because there is	// potentially a dot between the parentheses.	int iend = fullInfo.lastIndexOf('(');	if(iend == -1)	  className = NA;	else {	  iend =fullInfo.lastIndexOf('.', iend);	  // This is because a stack trace in VisualAge looks like:          //java.lang.RuntimeException	  //  java.lang.Throwable()	  //  java.lang.Exception()	  //  java.lang.RuntimeException()	  //  void test.test.B.print()	  //  void test.test.A.printIndirect()	  //  void test.test.Run.main(java.lang.String [])          int ibegin = 0;	  if (inVisualAge) {	    ibegin = fullInfo.lastIndexOf(' ', iend)+1;          }	  if(iend == -1)	    className = NA;	  else	    className = this.fullInfo.substring(ibegin, iend);	}      }      return className;    }    /**       Return the file name of the caller.       <p>This information is not always available.    */    public    String getFileName() {      if(fullInfo == null) return NA;      if(fileName == null) {	int iend = fullInfo.lastIndexOf(':');	if(iend == -1)	  fileName = NA;	else {	  int ibegin = fullInfo.lastIndexOf('(', iend - 1);	  fileName = this.fullInfo.substring(ibegin + 1, iend);	}      }      return fileName;    }    /**       Returns the line number of the caller.       <p>This information is not always available.    */    public    String getLineNumber() {      if(fullInfo == null) return NA;      if(lineNumber == null) {	int iend = fullInfo.lastIndexOf(')');	int ibegin = fullInfo.lastIndexOf(':', iend -1);	if(ibegin == -1)	  lineNumber = NA;	else	  lineNumber = this.fullInfo.substring(ibegin + 1, iend);      }      return lineNumber;    }    /**       Returns the method name of the caller.    */    public    String getMethodName() {      if(fullInfo == null) return NA;      if(methodName == null) {	int iend = fullInfo.lastIndexOf('(');	int ibegin = fullInfo.lastIndexOf('.', iend);	if(ibegin == -1)	  methodName = NA;	else	  methodName = this.fullInfo.substring(ibegin + 1, iend);      }      return methodName;    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美偷拍卡通变态| 亚洲精品一线二线三线| 中文字幕一区二区三区四区| 国产不卡在线视频| 国产精品午夜久久| 色又黄又爽网站www久久| 亚洲欧美日韩国产成人精品影院 | 日本不卡一区二区三区 | 成人高清视频在线观看| 中文字幕不卡的av| 91丨九色丨尤物| 亚洲成人av免费| 538在线一区二区精品国产| 麻豆一区二区三| 国产欧美日韩麻豆91| 91老司机福利 在线| 亚洲123区在线观看| 欧美成人精精品一区二区频| 国产一区二区电影| 亚洲色图欧美激情| 7777精品伊人久久久大香线蕉的 | 国产日产欧美一区| 色悠悠久久综合| 青青草原综合久久大伊人精品优势 | 成人黄色大片在线观看| 有码一区二区三区| 欧美一级夜夜爽| aa级大片欧美| 日本中文字幕一区二区视频 | 青草国产精品久久久久久| 久久精品欧美一区二区三区麻豆| 99re这里只有精品首页| 日韩电影在线一区二区| 国产精品久久午夜| 337p亚洲精品色噜噜| 福利一区二区在线| 午夜av区久久| 国产精品伦一区二区三级视频| 欧美性大战久久久久久久蜜臀 | 国产一区二区免费视频| 怡红院av一区二区三区| 久久久蜜桃精品| 欧美久久久久久蜜桃| 成人美女在线视频| 蜜桃av噜噜一区| 亚洲小说欧美激情另类| 国产精品沙发午睡系列990531| 欧美一级理论性理论a| 色94色欧美sute亚洲线路一ni| 精品一区二区三区视频在线观看| 亚洲一级电影视频| 国产精品私人自拍| 欧美www视频| 欧美人狂配大交3d怪物一区| 99久久精品久久久久久清纯| 国产一区二区精品久久| 日本免费新一区视频| 亚洲一二三区不卡| 亚洲欧洲中文日韩久久av乱码| 久久嫩草精品久久久久| 日韩精品一区二区三区四区| 欧美日韩情趣电影| 在线亚洲+欧美+日本专区| 99热国产精品| 成人一区二区三区中文字幕| 国产乱淫av一区二区三区| 美国毛片一区二区| 日韩成人精品在线| 日韩电影在线一区二区| 亚洲va中文字幕| 亚洲网友自拍偷拍| 亚洲资源中文字幕| 一区二区三区.www| 亚洲综合激情另类小说区| 亚洲人成7777| 亚洲精品中文在线观看| 亚洲欧洲制服丝袜| 亚洲精选一二三| 亚洲香肠在线观看| 午夜精品123| 天天av天天翘天天综合网色鬼国产 | 欧美美女激情18p| 欧美无人高清视频在线观看| 欧美无乱码久久久免费午夜一区 | 丝袜美腿一区二区三区| 午夜精品一区二区三区电影天堂| 亚洲国产视频直播| 亚洲.国产.中文慕字在线| 偷拍亚洲欧洲综合| 久久国产三级精品| 国产成人久久精品77777最新版本| 国产乱色国产精品免费视频| 成人免费毛片嘿嘿连载视频| av成人免费在线| 精品视频一区二区不卡| 欧美一级在线视频| 久久久久久久久久久久久女国产乱| 国产三级欧美三级日产三级99| 国产精品久久综合| 亚洲一区在线视频| 蓝色福利精品导航| 国产成人亚洲综合a∨婷婷图片| 成人av在线影院| 在线亚洲一区二区| 日韩欧美色电影| 亚洲国产高清在线观看视频| 一区二区三区丝袜| 免费看黄色91| 不卡的电影网站| 欧美精品色综合| 久久久综合九色合综国产精品| 亚洲欧美一区二区在线观看| 亚洲一卡二卡三卡四卡五卡| 久久97超碰国产精品超碰| www.色综合.com| 欧美老年两性高潮| 国产色产综合色产在线视频| 亚洲一区二区三区四区在线免费观看| 丝袜诱惑制服诱惑色一区在线观看| 国模大尺度一区二区三区| 99re免费视频精品全部| 日韩欧美一区电影| 日韩码欧中文字| 久久精品国产秦先生| 色猫猫国产区一区二在线视频| 日韩欧美国产综合| 一区二区三区在线视频免费观看| 国产综合久久久久影院| 欧美又粗又大又爽| 亚洲国产激情av| 蜜臀久久99精品久久久久宅男 | 欧美伊人精品成人久久综合97| 26uuuu精品一区二区| 亚洲国产日韩综合久久精品| 国产精品18久久久久久久网站| 欧美亚洲动漫另类| 国产精品久久久久久户外露出| 日本成人在线网站| 色av综合在线| 国产精品素人视频| 国产曰批免费观看久久久| 色综合天天狠狠| 久久综合久久综合九色| 偷拍与自拍一区| 在线亚洲人成电影网站色www| 国产欧美日韩另类视频免费观看| 蜜桃91丨九色丨蝌蚪91桃色| 99精品久久只有精品| 久久久久国产精品麻豆ai换脸| 日本女人一区二区三区| 欧美三级三级三级| 一区二区三区四区精品在线视频| 成人一区二区三区视频| 久久久久久久综合狠狠综合| 奇米影视一区二区三区| 欧美网站一区二区| 亚洲一区视频在线观看视频| 激情偷乱视频一区二区三区| 在线观看视频一区二区欧美日韩| 欧美日韩亚洲综合在线| 在线观看一区日韩| 国产日韩视频一区二区三区| 99精品在线观看视频| 国产亚洲欧美在线| 久久爱另类一区二区小说| 6080午夜不卡| 图片区小说区国产精品视频| 欧美日韩黄色影视| 26uuu国产日韩综合| 97超碰欧美中文字幕| 亚洲成国产人片在线观看| 911精品国产一区二区在线| 国产一区二三区好的| 亚洲色图第一区| 日韩一区二区在线观看视频| 国产91富婆露脸刺激对白| 一区二区三区.www| 日韩免费成人网| 风间由美性色一区二区三区| 五月综合激情网| 亚洲国产成人午夜在线一区| 欧美日韩一区不卡| 懂色一区二区三区免费观看| 亚洲精品国产精华液| 精品国产亚洲在线| 色呦呦国产精品| 韩国av一区二区| 一区二区三区精品久久久| 久久久午夜精品| 欧美亚洲综合网| 成人激情免费网站| 日产精品久久久久久久性色| 国产精品国产a| 日韩一级完整毛片| 成人丝袜18视频在线观看| 日本成人中文字幕| 夜夜嗨av一区二区三区中文字幕| 久久伊99综合婷婷久久伊| 91视频在线看| 国产精品自产自拍|