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

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

?? tracer.aj

?? mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序
?? AJ
字號:
/*
      Copyright (C) 2005 MySQL AB

      This program is free software; you can redistribute it and/or modify
      it under the terms of version 2 of the GNU General Public License as 
      published by the Free Software Foundation.

      There are special exceptions to the terms and conditions of the GPL 
      as it is applied to this software. View the full text of the 
      exception in file EXCEPTIONS-CONNECTOR-J in the directory of this 
      software distribution.

      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.

      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package com.mysql.jdbc.trace;

import java.io.PrintStream;
import java.sql.SQLException;

import com.mysql.jdbc.log.Log;
import com.mysql.jdbc.log.StandardLogger;
import com.mysql.jdbc.Connection;

import org.aspectj.lang.JoinPoint;

public aspect Tracer {

    pointcut constructors(): execution(* *(..)) && within(com.mysql.jdbc.* ) 
    	&& within (!com.mysql.jdbc.trace.*) && within(!com.mysql.jdbc.log.*)
    	&& within (!com.mysql.jdbc.Util);
  
    pointcut methods(): execution(* *(..)) && within(com.mysql.jdbc.* ) 
    	&& within(!com.mysql.jdbc.trace.*) && within(!com.mysql.jdbc.log.*)
    	&& within (!com.mysql.jdbc.Util);

    before(): constructors() && methods() {
		entry(thisJoinPoint, false);
    }
    
    after() returning (Object o): constructors() && methods() {
	  exit(thisJoinPoint, false, o);
    }

	private Log standardLogger = new StandardLogger("MySQL", false);
	
    private ThreadLocal stream = new ThreadLocal() {
	    protected Object initialValue() {
			return System.err;
	    }
	};
	
	private ThreadLocal log = new ThreadLocal() {
		protected Object initialValue() {
			return standardLogger;
	    }
	};
	
    private ThreadLocal callDepth = new ThreadLocal() {
	    protected Object initialValue() {
			return new Integer(0);
	    }
	};

    private PrintStream getStream() { 
		return (PrintStream)stream.get(); 
    }
    
    private void setStream(PrintStream s) { 
		stream.set(s); 
    }
    
    private int  getCallDepth() { 
		return ((Integer)(callDepth.get())).intValue();
    }
    
    private void setCallDepth(int n) { 
		callDepth.set(new Integer(n)); 
    }
    
    private Log getLog() { 
		return (Log)log.get();
    }
    
    private void setLog(Log l) { 
		log.set(l); 
    }

    private void entry(JoinPoint jp, boolean isConstructor) {
		
		if (jp.getTarget() instanceof com.mysql.jdbc.Connection) {
			if ("getLog".equals(jp.getSignature().getName())) {
				return;
			}
			
    		try {
    			Log connectionLog = ((com.mysql.jdbc.Connection)jp.getTarget()).getLog();

    			if (getLog() != connectionLog) {
    				setLog(connectionLog);
	    		}
	    	} catch (SQLException ex) {
	    		// swallow it, can't do anything here
	    	}
    	}
    	
    	if ("com.mysql.jdbc.Buffer".equals(jp.getSignature().getDeclaringTypeName())
    		&& ("toString".equals(jp.getSignature().getName())
    		 || "dumpClampedBytes".equals(jp.getSignature().getName()))) {
    		return;
    	}
    	
    	if ("com.mysql.jdbc.StringUtils".equals(jp.getSignature().getDeclaringTypeName())
    		&& "dumpAsHex".equals(jp.getSignature().getName())) {
    		return;
    	}
    	
		setCallDepth(getCallDepth() + 1);
		printEntering(jp, isConstructor);
    }

    private void exit(JoinPoint jp,  boolean isConstructor, Object returnValue) {
    	if (jp.getTarget() instanceof com.mysql.jdbc.Connection) {
			if ("getLog".equals(jp.getSignature().getName())) {
				return;
			}
		}
		
    	if ("com.mysql.jdbc.Buffer".equals(jp.getSignature().getDeclaringTypeName())
    		&& ("toString".equals(jp.getSignature().getName())
    		 || "dumpClampedBytes".equals(jp.getSignature().getName()))) {
    		return;
    	}
    	
    	if ("com.mysql.jdbc.StringUtils".equals(jp.getSignature().getDeclaringTypeName())
    		&& "dumpAsHex".equals(jp.getSignature().getName())) {
    		return;
    	}
			
		printExiting(jp, isConstructor, returnValue);
		setCallDepth(getCallDepth() - 1);
    }

    private void printEntering (JoinPoint jp, boolean isConstructor) {
    	
    	
    	if (getLog().isTraceEnabled()) {
    		
    		StringBuffer buf = new StringBuffer(80);
			printIndent(buf);
			buf.append("--> ");

			buf.append(jp.getSourceLocation().getFileName());
			buf.append(":");
			buf.append(jp.getSourceLocation().getLine());
			buf.append(" ");
			buf.append(jp.getSignature().getDeclaringTypeName());
			buf.append(".");
			buf.append(jp.getSignature().getName());
    		printParameters(jp, buf);

			getLog().logTrace(buf);
		}
    }

    private void printExiting (JoinPoint jp, boolean isConstructor, Object returnValue) {
    	if (getLog().isTraceEnabled()) {
    		StringBuffer buf = new StringBuffer(80);
			printIndent(buf);
			
			buf.append("<--  ");
			buf.append(jp.getSourceLocation().getFileName());
			buf.append(":");
			buf.append(jp.getSourceLocation().getLine());
			buf.append(" ");
			buf.append(jp.getSignature().getDeclaringTypeName());
			buf.append(".");
			buf.append(jp.getSignature().getName());
			buf.append("(..) returning ");
			
			boolean isString = returnValue instanceof String;
  			
  			if (isString) {
  				buf.append("\"");
  			}
  	    	
  	    	buf.append(returnValue);
  	    	
  	    	if (isString) {
  				buf.append("\"");
  			}

			getLog().logTrace(buf);
		}
    }



    private void printIndent(StringBuffer buf) {
		for (int i = 0; i < getCallDepth(); i++) {
	    	buf.append(" ");
	    }
    }
    
    private void printParameters(JoinPoint jp, StringBuffer buf) {
  		Object[] params = jp.getArgs();
	 	
  		buf.append("(");
  		
  		for (int i = 0; i < params.length; i++) {
  			boolean isString = params[i] instanceof String;
  			
  			if (isString) {
  				buf.append("\"");
  			}
  	    	
  	    	if (params[i] != null) {
  	    		Class paramClass = params[i].getClass();
  	    		String paramClassName = null;
  	    		
  	    		if (paramClass != null) {
  	    			paramClassName = paramClass.getName();
  	    		}
  	    		
  	    		if (paramClassName!= null &&
  	    			"com.mysql.jdbc.Buffer".equals(paramClassName)
  	    			|| "com.mysql.jdbc.ByteArrayBuffer".equals(paramClassName)
  	    			|| "com.mysql.jdbc.ChannelBuffer".equals(paramClassName)) {
  	    			buf.append("Network packet, data follows:\n\n");
  	    			buf.append(params[i]);
  	    			buf.append("\n\n");
  	    		} else {
  	    			buf.append(params[i]);
  	    		}
  	    	} else {
  	    		buf.append("null");
  	    	}
  	    	
  	    	if (isString) {
  				buf.append("\"");
  			}
  			
  	    	if (i < params.length - 1) {
  	    		buf.append(", ");
  	    	}
  		}
  		
  		buf.append(")");
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合一区二区三区| 中文字幕亚洲电影| 91高清在线观看| 国产成人综合亚洲网站| 精品制服美女丁香| 免费人成精品欧美精品 | 日韩精品一区二区三区视频| 色妹子一区二区| 色综合久久中文综合久久97| 成人av片在线观看| 91论坛在线播放| 91精品福利视频| 精品视频色一区| 91精品国产色综合久久久蜜香臀| 欧美日韩成人综合天天影院 | 成人国产精品免费网站| 成人免费高清视频在线观看| jvid福利写真一区二区三区| 不卡av在线网| 欧美日韩一区中文字幕| 日韩一区二区麻豆国产| 欧美电影免费观看高清完整版在线 | 一区二区三区高清| 一区二区三区在线影院| 午夜精品影院在线观看| 麻豆精品精品国产自在97香蕉| 国产精品一级在线| 91蜜桃在线观看| 欧美日韩一区二区三区视频| 欧美成人video| 中文字幕在线观看一区| 午夜视黄欧洲亚洲| 国产麻豆视频一区二区| 95精品视频在线| 911精品国产一区二区在线| 国产人久久人人人人爽| 亚洲午夜免费电影| 国产呦萝稀缺另类资源| 在线视频一区二区三| 欧美xxxxxxxx| 一区二区三区欧美日| 久久99国产精品麻豆| 色婷婷久久综合| 精品国产a毛片| 亚洲综合在线视频| 国产精品一级黄| 欧美一区二区三区人| 日韩美女久久久| 亚洲高清视频中文字幕| 国产成人av一区二区三区在线| 午夜伦欧美伦电影理论片| 精品国产一区久久| 18涩涩午夜精品.www| 色婷婷激情综合| 欧美日韩黄色一区二区| 国产精品国产三级国产有无不卡 | 亚洲自拍偷拍网站| 欧美三级在线看| 日本三级韩国三级欧美三级| 精品国产污网站| 国产精品一区二区男女羞羞无遮挡| 国产欧美日韩精品一区| av在线一区二区| 日精品一区二区三区| 久久免费电影网| 91免费看`日韩一区二区| 午夜精品久久久久久久99水蜜桃| 精品奇米国产一区二区三区| 成人av一区二区三区| 亚洲国产你懂的| 久久精品一区八戒影视| 欧美午夜免费电影| 国产美女视频一区| 亚洲一区二区三区四区在线| 精品国产百合女同互慰| 欧美午夜电影在线播放| 国产精品一品二品| 日日夜夜免费精品| 中文字幕亚洲区| 欧美成va人片在线观看| 99国产精品99久久久久久| 免费在线看一区| 亚洲精品中文字幕在线观看| 精品剧情v国产在线观看在线| 91免费精品国自产拍在线不卡| 激情五月婷婷综合网| 亚洲一二三四区不卡| 国产视频一区二区三区在线观看| 国产精品第四页| 欧美精品精品一区| 99久久久免费精品国产一区二区| 久久黄色级2电影| 亚洲风情在线资源站| 久久久久久久久99精品| 538在线一区二区精品国产| 成人av中文字幕| 国产91精品欧美| 久久99精品国产麻豆不卡| 亚洲一区二区精品3399| 国产精品高潮呻吟久久| 精品国产凹凸成av人导航| 欧美一区二区视频免费观看| 在线影院国内精品| 91免费看片在线观看| 99久久久国产精品免费蜜臀| 成人一道本在线| 国产69精品久久99不卡| 国模无码大尺度一区二区三区| 日本在线观看不卡视频| 青青青伊人色综合久久| 亚洲午夜一二三区视频| 亚洲精品国产视频| 亚洲欧美日韩综合aⅴ视频| 亚洲欧洲精品一区二区精品久久久| 欧美成人a视频| 2024国产精品视频| 久久精品欧美日韩| 国产亲近乱来精品视频| 久久久国产综合精品女国产盗摄| 日韩精品一区二区三区四区| 91精品国产91综合久久蜜臀| 91精品国产综合久久精品| 91.麻豆视频| 亚洲精品在线观看网站| 国产日韩欧美精品在线| 久久久夜色精品亚洲| 国产精品美女久久久久久久久| 久久精品网站免费观看| 国产精品丝袜久久久久久app| 国产精品麻豆久久久| 国产精品传媒在线| 亚洲影视在线观看| 日韩激情av在线| 精品在线亚洲视频| 成人网在线播放| 色国产综合视频| 欧美一区二区精品在线| 欧美大片国产精品| 国产精品免费观看视频| 一区二区三区日本| 美女视频黄 久久| 懂色av噜噜一区二区三区av| 色婷婷一区二区| 日韩欧美不卡在线观看视频| 久久蜜桃香蕉精品一区二区三区| 久久蜜桃av一区精品变态类天堂 | 国产精品美日韩| 国产精品久久久久aaaa樱花 | 欧美国产日韩a欧美在线观看| 国产精品天干天干在线综合| 一区二区三区日韩欧美| 乱中年女人伦av一区二区| 成人18精品视频| 欧美一区二区福利在线| 国产精品色在线观看| 五月激情丁香一区二区三区| 粉嫩蜜臀av国产精品网站| 在线观看日产精品| 久久久精品黄色| 亚洲午夜久久久久久久久电影网 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 在线观看网站黄不卡| 久久综合给合久久狠狠狠97色69| 国产精品不卡一区| 另类欧美日韩国产在线| 一本色道久久综合狠狠躁的推荐| 日韩午夜激情电影| 亚洲一区视频在线| 成人午夜在线视频| 日韩欧美的一区二区| 一区二区三区91| 国产91精品在线观看| 精品欧美黑人一区二区三区| 一区二区三区在线视频免费| 国内久久精品视频| 欧美年轻男男videosbes| 中文字幕亚洲欧美在线不卡| 国产乱码精品一区二区三区忘忧草 | 亚洲国产成人精品视频| 国产精品一区二区久激情瑜伽| 7777精品久久久大香线蕉| 亚洲国产精品黑人久久久| 麻豆91精品91久久久的内涵| 欧美午夜片在线观看| 亚洲免费视频中文字幕| 国产伦理精品不卡| 欧美一级日韩免费不卡| 亚洲国产美国国产综合一区二区| 99re这里都是精品| 国产精品视频一区二区三区不卡| 国内不卡的二区三区中文字幕| 欧美一区二区三区成人| 肉色丝袜一区二区| 欧美一区二区国产| 免费久久99精品国产| 欧美一级二级三级乱码| 日韩影院免费视频| 538prom精品视频线放| 亚洲mv在线观看| 欧美一区二区三区在线视频 |