miracleyao
V2EX  ›  问与答

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

  •  
  •   miracleyao · Jul 4, 2016 · 4308 views
    This topic created in 3605 days ago, the information mentioned may be changed or developed.

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

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

    5 replies    2016-07-05 09:43:15 +08:00
    justjavac
        1
    justjavac  
       Jul 4, 2016 via Android
    这个属于 java 基础了吧
    xinyewdz
        2
    xinyewdz  
       Jul 4, 2016
    log4j 是通过抛出异常获取行号和方法的。以前的公司做法是,把当前 class 传到方法里面,只打印出类名,不打印行号和方法名。
    SoloCompany
        3
    SoloCompany  
       Jul 4, 2016
    直接构造 LogRecord 啊,剩下的你自己查 javadoc 吧
    miracleyao
        5
    miracleyao  
    OP
       Jul 5, 2016
    @yinheli 谢谢,就是根据这个改造了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4065 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 05:23 · PVG 13:23 · LAX 22:23 · JFK 01:23
    ♥ Do have faith in what you're doing.