Log4j 是输出日志时是如何获知当前方法、行号的?

2016-07-04 17:08:39 +08:00
 miracleyao

目前项目中需要对 Log4j 封装一层,比如有个日志工具类 LoggerUtil ,里面有 info 、 debug 、 warn 、 error 等静态方法,在需要打日志的代码处我们只需要调用 LoggerUtil.info()便可以。

但是这样存在一个问题,无法正确打印需要打日志的地方,即 Test.java 在 15 行处调用了 LoggerUtil.info(),日志打印得是 LoggerUtil 中调用的行数,而不会正确打印 Test 中调用的地方,现在我需要进行改造,比如获知当前方法、行号的方式,请问大家在项目中封装过日志类吗?

3688 次点击
所在节点    问与答
5 条回复
justjavac
2016-07-04 17:10:55 +08:00
这个属于 java 基础了吧
xinyewdz
2016-07-04 17:56:03 +08:00
log4j 是通过抛出异常获取行号和方法的。以前的公司做法是,把当前 class 传到方法里面,只打印出类名,不打印行号和方法名。
SoloCompany
2016-07-04 22:51:45 +08:00
直接构造 LogRecord 啊,剩下的你自己查 javadoc 吧
yinheli
2016-07-05 01:40:44 +08:00
miracleyao
2016-07-05 09:43:15 +08:00
@yinheli 谢谢,就是根据这个改造了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/290207

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX