`

java方法执行轨迹跟踪

阅读更多

今天同事问了我个奇怪的问题。

    方法a调用方法b,执行b时,需要知道是谁调用它的,当然在这里就是方法a,但是该如何获取呢?

    百毒贱狗都没找到,

    我这个同事后面自己解决了,牛B呀,既然解决了。在此记录下。

 

public class ClassReferrer {

	public void aaa() {
		System.out.println();
		System.out.println("执行: " + Thread.currentThread().getStackTrace()[1]);
		System.out.println("方法: " + Thread.currentThread().getStackTrace()[2] + " 调用了  " + Thread.currentThread().getStackTrace()[1]);
		bbb();
	}

	public void bbb() {
		System.out.println();
		System.out.println("执行: " + Thread.currentThread().getStackTrace()[1]);
		System.out.println("方法: " + Thread.currentThread().getStackTrace()[2] + " 调用了  " + Thread.currentThread().getStackTrace()[1]);
		ccc();
	}

	public void ccc() {
		System.out.println();
		System.out.println("执行: " + Thread.currentThread().getStackTrace()[1]);
		System.out.println("方法: " + Thread.currentThread().getStackTrace()[2] + " 调用了  " + Thread.currentThread().getStackTrace()[1]);
		System.out.println("方法: " + Thread.currentThread().getStackTrace()[3] + " 调用了  " + Thread.currentThread().getStackTrace()[2]);
	}

	public static void main(String[] args) {
		ClassReferrer o = new ClassReferrer();
		System.out.println("开始");
		o.aaa();
		System.out.println();
		System.out.println("结束");
	}
}

 

以上代码是个Demo,也供大家参考。

 

这里贴一个应用

import org.slf4j.Logger;

public class LoggerFactory {

	/**
	 * 根据线程自动获取类名称
	 */
	public static Logger getLogger() {
		StackTraceElement[] el = Thread.currentThread().getStackTrace();
		if (el != null && el[2] != null)
			return org.slf4j.LoggerFactory.getLogger(el[2].getClassName());
		return org.slf4j.LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
	}

	/**
	 * 针对同名类LoggerFactory重写getLogger方法
	 */
	public static Logger getLogger(String name) {
		return org.slf4j.LoggerFactory.getLogger(name);
	}
}
 

代码如下,不解释。

import org.slf4j.Logger;

public class HelloWorld {
	private static Logger slf4jlog =  LoggerFactory.getLogger(HelloWorld.class.getName());
	public static void main(String[] args) {
		slf4jlog.debug("原有日志测试");
		LoggerFactory.getLogger().debug("改造后日志测试");
	}
}
 

 

 

 

 

 

分享到:
评论
1 楼 lyjilu 2013-05-25  
没找到肯定是你关键字不对!!!

相关推荐

    GIS-system.zip_gis java_gis 轨迹_gis轨迹生成器_跟踪_轨迹

    在本项目中,"GIS-system.zip_gis java_gis 轨迹_gis轨迹生成器_跟踪_轨迹"的标题和描述揭示了一个专注于GIS技术的应用,特别是与Java编程语言相结合,用于生成和跟踪移动对象的轨迹。 在Java环境中开发GIS应用,...

    基于Matlab使用LQR实现的车辆轨迹跟踪+源代码+文档说明

    1、资源内容:基于Matlab使用LQR实现的车辆轨迹跟踪+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功,功能ok的情况下才...

    Java实现跟踪鼠标运行坐标的源码

    在Java编程环境中,跟踪鼠标运行坐标是一项常见的需求,特别是在开发图形用户界面(GUI)应用程序时。这个主题涉及Java AWT和Swing库,这两个库提供了处理鼠标事件和获取鼠标位置的功能。下面我们将深入探讨如何使用...

    Java编写的一个小程序,用以实现跟踪鼠标的运行位置

    在本文中,我们将深入探讨如何使用Java编程语言来创建一个小型程序,该程序可以跟踪鼠标的运行位置。这个程序对于开发者来说非常有用,因为它可以帮助理解鼠标事件处理以及图形用户界面(GUI)的基本工作原理。 ...

    百度地图轨迹划线 轨迹跟踪 跑步Demo

    在Android平台上,开发一款应用来实现“百度地图轨迹划线 轨迹跟踪 跑步Demo”涉及到了多个关键的技术点。以下是对这些技术点的详细解释: 1. **百度地图API集成**:首先,我们需要集成百度地图SDK到我们的Android...

    GIS-system.zip_gis java_实时跟踪系统_轨迹

    而"基于GIS的移动对象实时跟踪系统的执行文件"和"基于GIS的移动对象实时跟踪系统的程序代码"则分别提供了编译后的可执行程序和源码,方便用户运行和进一步研究。 通过深入理解和修改这些代码,开发者可以定制自己的...

    采用模糊逻辑的机器人轨迹的跟踪

    为了克服这些困难,本文介绍了一种基于模糊逻辑的移动机器人轨迹跟踪控制方法。 #### 二、背景与动机 传统的移动机器人轨迹跟踪控制方法主要包括线性比例控制、PI控制、预测控制以及遗传算法控制等。尽管这些方法...

    Java实现物流跟踪查询+Demo+Word

    在本文中,我们将深入探讨如何使用Java来实现物流跟踪查询功能。这个功能是基于物流接口,允许用户通过输入物流公司简称和物流单号来获取实时的物流状态信息。我们将会讲解核心概念、步骤以及如何利用提供的Demo进行...

    GIS-system.zip_gis java_gis程序设计_实时跟踪系统_轨迹

    在"基于GIS的移动对象实时跟踪系统的执行文件"中,包含了编译后的可执行程序,用户可以运行这个程序来演示系统的功能。这通常会包含一个主程序,用于启动跟踪系统,加载配置,初始化GIS地图,并处理用户输入。 在...

    基于颜色的图像识别与轨迹跟踪

    基于颜色的图像识别与轨迹跟踪。作品名为“基于图像识别的粉笔书写装置”,主要原理为:通过摄像头装置实时读取人手的书写信息,并反馈给上位机,上位机对得到的图像信息进行图像识别相关处理之后,得到相应轨迹的点位...

    天地图多车轨迹.zip

    这里提到的Java可能是指ArcGIS的Java API,用于后端处理地图数据和轨迹计算。JavaScript则用于前端展示,可能结合了ArcGIS JavaScript API来与天地图平台进行交互。"require"可能指的是模块管理工具,如CommonJS或...

    GPS定位信息跟踪系统JAVA

    【标题】"GPS定位信息跟踪系统JAVA"是一个基于JAVA语言开发的系统,旨在实现GPS(全球定位系统)的定位和跟踪功能。对于那些在IT行业,特别是从事GPS技术、地理信息系统(GIS)或者车辆调度系统的开发者来说,这是一...

    捷联系统跟踪轨迹-源码

    7. **服务器端编程**:后端服务器负责处理客户端请求、存储数据、执行计算等任务,可能使用Python、Java或Node.js等语言编写。 8. **安全性与权限控制**:源码可能包含了用户认证、授权机制,防止未授权访问和数据...

    java 我的位置在哪里

    在Java编程语言中,"我的位置在哪里"这个...综上所述,"Java 我的位置在哪里"是一个多维度的问题,涉及了内存管理、程序执行流程、项目结构、运行环境等多个方面。理解这些概念对于深入学习和使用Java编程至关重要。

    Java 坦克大战 包括源代码 可执行文件

    编译好的.class文件是Java编译器将.java源码转换成的字节码,它们是Java虚拟机(JVM)可直接执行的二进制文件。.jar文件是Java的归档文件,它将多个.class文件打包在一起,便于分发和运行。在游戏中,.jar文件包含...

    activiti工作流流程跟踪图(图片(两种方式))

    Activiti是一款开源的工作流引擎,它为业务流程自动化提供了强大的支持。...在压缩包中的"流程跟踪图(图片)"可能就包含了这两种高亮方式的示例,可以参考这些图片来进一步理解并实践生成流程跟踪图的方法。

    基于Matlab使用LQR实现车辆轨迹跟踪.zip

    【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...

    顺丰快递API接口(Java端)

    顺丰快递API接口是针对开发者设计的一套用于集成顺丰快递服务的Java端开发工具包,它允许程序员通过编程方式与顺丰的物流系统进行交互,实现诸如下单、查询快递状态、获取轨迹信息等一系列功能。这个API接口主要面向...

    java性能分析文档

    Java性能分析是优化Java应用程序的关键步骤,它涉及监控和理解应用程序在运行时的资源消耗,如CPU使用率、内存分配、线程活动等。Performance Analyzer是一款专门针对Java性能的工具,它提供了深入洞察应用程序性能...

Global site tag (gtag.js) - Google Analytics