Java获取当前运行的类名, 方法名,代码行数?使用Idea的Live Templates模板功能轻松敲出来

我们在开发过程中,经常需要使用代码打印异常Exception的log日志, 在项目中, 我看到同事写的是这样的:

try{
}catch (Exception e) {
   logger.error("MallOrderServiceImpl>>>【mallStoreOrderList】:" + e.toString());
}

这样的话,复用性肯定不高, 每次在每个方法里面都要这样写.

那我们就来看看怎么获取类名和方法名吧:

a. 获取ClassName 类名
非静态方法中:
this.getClass().getName();
静态方法:
Thread.currentThread().getStackTrace()[1].getClassName();
b.获取当前的method方法名
Thread.currentThread().getStackTrace()[1].getMethodName();
c. 获取当前运行的行号
Thread.currentThread().getStackTrace()[1].getLineNumber();

打印日志代码:现在来试试吧:

logger.error("Class: "+this.getClass().getName()+" method: "+
Thread.currentThread().getStackTrace()[1].getMethodName() +" line: 【"+
Thread.currentThread().getStackTrace()[1].getLineNumber()+"】发生的异常是: " + e.toString());

其实不用这么麻烦,因为log4j会打印类名, 报错行数的话在e的StackTrace也会有, 所以我们就只需要把方法名和具体的异常信息打印出来就好了【推荐】:

logger.error(Thread.currentThread().getStackTrace()[1].getMethodName() +"发生的异常是: ",e);

【附一】Idea配置代码模板

每次都要写这么一长串代码肯定也不是长久之计, 那么我们就可以使用Idea的模板了。
settings > editor > Live Templates
这里写图片描述

这里我们创建一个分组, 取名log
这里写图片描述

然后就是这样子的了, 把模板名, 也就是我们在敲代码的时候输入的关键字确定好,把我们的代码粘贴上去 , 选择模板的作用的语言, 这里根据需求选择就好了
这里写图片描述

确认保存之后, 敲logger(我这里换成了error)就可以有代码提示了
这里写图片描述

【附二】使用Idea的模板中内置的变量

我们刚刚是使用Thread.currentThread()来获取当前的类名,方法名的, 其实使用模板的时候, idea已经帮我们做到了

使用$中间写变量名$, 然后右边的Edit variables就可以点击了, 点击进去就可以选择我们需要的变量了,如图
这里写图片描述

效果如下:
这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值