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

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

?? locationinfo.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. */// 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;    /**     * NA_LOCATION_INFO is provided for compatibility with log4j 1.3.     * @since 1.2.15     */    public static final LocationInfo NA_LOCATION_INFO =            new LocationInfo(NA, NA, NA, NA);  // Check if we are running in IBM's visual age.  static boolean inVisualAge = false;  static {    try {      inVisualAge = Class.forName("com.ibm.uvm.tools.DebugSupport") != null;      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 || fqnOfCallingClass == 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);    }    /**     *   Appends a location fragment to a buffer to build the      *     full location info.     *    @param buf StringBuffer to receive content.     *    @param fragment fragment of location (class, method, file, line),     *        if null the value of NA will be appended.     *    @since 1.2.15     */    private static final void appendFragment(final StringBuffer buf,                                             final String fragment) {          if (fragment == null) {             buf.append(NA);          } else {             buf.append(fragment);          }    }    /**     * Create new instance.     * @param file source file name     * @param classname class name     * @param method method     * @param line source line number     *     * @since 1.2.15     */    public LocationInfo(      final String file,      final String classname,      final String method,      final String line) {      this.fileName = file;      this.className = classname;      this.methodName = method;      this.lineNumber = line;      StringBuffer buf = new StringBuffer();	  appendFragment(buf, classname);	  buf.append(".");	  appendFragment(buf, method);	  buf.append("(");	  appendFragment(buf, file);	  buf.append(":");	  appendFragment(buf, line);	  buf.append(")");	  this.fullInfo = buf.toString();    }    /**       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一区二区三区免费野_久草精品视频
精品国产91亚洲一区二区三区婷婷 | 激情深爱一区二区| 国产a区久久久| 亚洲国产精品国自产拍av| 日韩国产一二三区| 日韩欧美成人一区二区| 久久国产尿小便嘘嘘尿| 日韩欧美一区电影| 国产综合成人久久大片91| 国产免费成人在线视频| 国产.精品.日韩.另类.中文.在线.播放| 欧美成人精品福利| 99久久夜色精品国产网站| 中文字幕一区二区三区四区不卡 | 国产亚洲欧美一级| 福利一区福利二区| 亚洲精品国产一区二区精华液| 欧美日韩在线电影| 九九国产精品视频| 亚洲国产精品t66y| 色久优优欧美色久优优| 麻豆高清免费国产一区| 国产人成一区二区三区影院| 一本一道久久a久久精品综合蜜臀| 午夜av一区二区| 欧美国产日产图区| 欧美日韩亚洲综合在线| 国产一区二区三区观看| 夜夜精品浪潮av一区二区三区| 欧美一区二区精品| 成年人国产精品| 日韩电影在线观看电影| 中文字幕一区二区三区精华液 | 在线视频综合导航| 久草在线在线精品观看| 一区二区三区视频在线看| 日韩一级完整毛片| 91免费观看视频在线| 视频一区国产视频| 日本一区二区成人| 欧美电视剧在线看免费| 95精品视频在线| 久久er99精品| 亚洲综合清纯丝袜自拍| 国产女主播在线一区二区| 欧美日韩久久久久久| 不卡视频一二三| 极品销魂美女一区二区三区| 亚洲电影欧美电影有声小说| 中文字幕在线观看不卡| 精品国内片67194| 欧美日韩高清影院| 色婷婷久久久亚洲一区二区三区| 国产在线一区二区综合免费视频| 亚洲精品第1页| 国产精品美女久久久久av爽李琼| 亚洲色图在线播放| 久久综合久久鬼色中文字| 欧美人与禽zozo性伦| 97se狠狠狠综合亚洲狠狠| 国产传媒欧美日韩成人| 免费高清视频精品| 亚洲成人午夜电影| 亚洲一区在线观看网站| 亚洲三级在线播放| 国产精品女上位| 久久色成人在线| 精品不卡在线视频| 日韩精品专区在线| 91精品欧美一区二区三区综合在| 欧美高清精品3d| 欧美二区在线观看| 欧美男男青年gay1069videost| 91久久精品一区二区| 成人av午夜影院| 大白屁股一区二区视频| 成人三级在线视频| 成人av资源站| 色8久久精品久久久久久蜜| 色一情一伦一子一伦一区| 色综合欧美在线| 欧美日韩小视频| 日韩精品一区二区三区视频在线观看| 欧美一级专区免费大片| 日韩欧美中文字幕公布| 日韩精品资源二区在线| 国产亚洲成av人在线观看导航 | 蜜臀av性久久久久蜜臀aⅴ | youjizz国产精品| 久久精品国产精品亚洲综合| 日韩高清在线电影| 亚洲国产wwwccc36天堂| 国产综合一区二区| 精品一区二区三区不卡| 久久99国产精品久久99果冻传媒| 狠狠色丁香婷婷综合| 成人精品国产一区二区4080| av在线不卡免费看| 欧美色图12p| 日韩欧美综合在线| 欧美日韩免费视频| 伦理电影国产精品| 国产日韩欧美a| 中文字幕佐山爱一区二区免费| 一区二区在线观看不卡| 免费精品视频在线| 国产成人精品影视| 在线一区二区视频| 日韩视频一区二区三区在线播放 | 中日韩av电影| 亚洲一区国产视频| 美女www一区二区| 国产999精品久久久久久 | 欧美二区三区91| 国产免费成人在线视频| 亚洲国产成人av好男人在线观看| 久久99精品久久久久久| 色综合中文综合网| 欧美电视剧在线观看完整版| 国产精品久久久久桃色tv| 亚洲综合激情网| 韩国精品主播一区二区在线观看 | 日本亚洲天堂网| 成人免费毛片aaaaa**| 91国产免费看| 日本一区二区三区高清不卡| 亚洲成人激情av| 粉嫩绯色av一区二区在线观看 | 色综合天天视频在线观看| 欧美不卡一二三| 亚洲欧美偷拍三级| 精品中文字幕一区二区小辣椒| 日本韩国欧美在线| 久久理论电影网| 日韩精品午夜视频| 一本久久精品一区二区| 久久久不卡网国产精品一区| 丝袜亚洲另类欧美综合| 欧美一区二区高清| 国产欧美日韩三区| 日韩成人精品在线观看| 色综合久久久久久久久久久| 国产视频视频一区| 蜜桃视频免费观看一区| 欧美日韩成人激情| 亚洲男女一区二区三区| 成人一区二区视频| 久久免费看少妇高潮| 日本va欧美va精品| 欧美午夜视频网站| 亚洲啪啪综合av一区二区三区| 成人自拍视频在线| 久久午夜羞羞影院免费观看| 伦理电影国产精品| 欧美精品乱码久久久久久按摩| 亚洲日本在线观看| 成a人片国产精品| 久久精品视频在线看| 国产一区二区三区最好精华液| 69堂亚洲精品首页| 亚洲国产精品嫩草影院| aaa欧美色吧激情视频| 久久综合国产精品| 久久丁香综合五月国产三级网站| 欧美丰满一区二区免费视频| 午夜久久久久久| 欧美精品v国产精品v日韩精品| 亚洲一区二三区| 欧美亚洲精品一区| 亚洲国产一区二区三区青草影视| 91猫先生在线| 一区二区三区在线视频免费| 欧美亚洲尤物久久| 亚洲成人免费电影| 91精品欧美久久久久久动漫| 首页综合国产亚洲丝袜| 911国产精品| 久久国产精品72免费观看| 欧美岛国在线观看| 国产精品综合在线视频| 国产校园另类小说区| aaa亚洲精品一二三区| 亚洲男人的天堂在线观看| 91黄色激情网站| 日本成人在线网站| 日韩免费高清视频| 成人精品视频一区二区三区尤物| 中文字幕一区在线| 色先锋资源久久综合| 日韩和欧美一区二区| 日韩欧美国产精品| 国产电影一区二区三区| 中文在线免费一区三区高中清不卡| 成年人国产精品| 亚洲国产精品欧美一二99| 日韩一区二区免费电影| 成人av在线资源网站| 夜夜嗨av一区二区三区网页 | 国产精品一二一区| 中文字幕一区视频|