今天同事问了我个奇怪的问题。
方法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("改造后日志测试");
}
}
分享到:
相关推荐
基于GIS的移动对象实时跟踪系统设计的Java源代码,打包的可执行程序可进行演示,设计了一种基于GIS技术模拟移动对象运动轨迹的生成器,实现了对结点的移动跟踪。
基于颜色的图像识别与轨迹跟踪。作品名为“基于图像识别的粉笔书写装置”,主要原理为:通过摄像头装置实时读取人手的书写信息,并反馈给上位机,上位机对得到的图像信息进行图像识别相关处理之后,得到相应轨迹的点位...
给出了基于GIS的移动对象实时跟踪系统设计的Java源代码,打包的可执行程序可进行演示,设计了一种基于GIS技术模拟移动对象运动轨迹的生成器,实现了对结点的移动跟踪。
1、资源内容:基于Matlab使用LQR实现的车辆轨迹跟踪+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功,功能ok的情况下才...
java毕业设计之ssm病人跟踪治疗信息管理系统(ssm+vue源码+LW+PPT+视频) 本网站系统使用动态网页开发SSM框架,Java作为系统的开发语言,MySQL作为后台数据库。设计开发了具有管理员;首页、个人中心、病人管理、...
源码亲测可用,可做计算机毕业设计、课程设计等参考,每份源码都有部署说明,帮助大家顺利运行。 【项目技术】 开发语言:Java 前端:vue 框架:ssm 架构:B/S 数据库:mysql 【实现功能】 前台首页:首页、医生、...
代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等...
(1)应用系统以java为基础,MapXtreme Java为GIS引擎,tomcat为服务器,SQLServer为数据库服务器,页面后台Jsp语言,通讯模块C++Builder语言,有完整的可执行源代码。 (2)系统最大支持1.5万辆注册车辆(视网络...
4.2.6 jstack:Java堆栈跟踪工具 4.2.7 HSDIS:JIT生成代码反汇编 4.3 JDK的可视化工具 4.3.1 JConsole:Java监视与管理控制台 4.3.2 VisualVM:多合一故障处理工具 4.4 本章小结 第5章 调优案例分析与实战 ...
给出了基于GIS的移动对象实时跟踪系统设计的Java源代码,打包的可执行程序可进行演示,设计了一种基于GIS技术模拟移动对象运动轨迹的生成器,实现了对结点的移动跟踪。
病人跟踪治疗信息管理系统采用B/S模式,促进了病人跟踪治疗信息管理系统的安全、快捷、高效的发展。传统的管理模式还处于手工处理阶段,管理效率极低,随着病人的不断增多,传统基于手工管理模式已经无法满足当前...
本项目是一套基于SSM的病人跟踪治疗信息管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、开发说明文档、演示视频、...
提供流程跟踪功能,记录流程的执行轨迹和历史信息,方便用户追溯和分析流程执行情况。 任务分配与调度: 根据流程定义和规则,系统自动分配任务给相应的审批人或处理者,并提醒用户处理待办任务。 支持任务的优先级...
数据可视化:结合可视化技术,实现公交线路的地图展示和用户行程的轨迹跟踪,增强用户体验。 通过以上功能和技术实现,公交搜索系统可以为用户提供准确、高效的公交信息查询服务,提升城市公共交通系统的智能化水平...
这个基于SSM框架的物流配送人员车辆调度管理系统是一个旨在提升物流配送效率和车辆调度管理的Java项目。通过结合后端的SSM(Spring+Spring MVC+MyBatis)框架和前端的Vue.js技术,系统实现了配送人员和车辆的管理、...
比纯调试器是国内推出的真正源代码级调试器,运用其独创编程语言AI技术,比纯调试器100%定位崩溃,100%定位死机源代码位置,比纯调试器跟踪进程的运行轨迹从而分析出BUG的位置和原因。比纯调试器支持断点、查看变量...
在本地运行该项目的最快方法是通过无需安装SDK,只需遵循以下四个步骤。 前往Google 运行git clone https://github.com/BenMob/trace-c19.git 运行cd trace-c19/app 运行mvn package appengine:run 注意:需要...
10-多个job在同一个main方法中提交.avi 第五天 hadoop2.x中HA机制的原理和全分布式集群安装部署及维护 01-zookeeper.avi 02-zookeeper2.avi 03-NN高可用方案的要点1.avi 04-hadoop-HA机制的配置文件.avi 05-...
使用 Android 传感器进行位置跟踪使用加速度计、陀螺仪和气压计进行位置跟踪的实验代码。这是一个实验性的实现。不实用。有必要校准加速度计。 需要执行±X、±Y、±Z 6 次。请阅读代码。说明: : 执照目前,将其视...