是否正确实现LOGGER并支持Thread.currentThread()。getStackTrace()?

时间:2017-11-07 07:20:46

标签: java multithreading logging

为了避免每个类的LOGGER实例太多,我试图通过使用Thread.currentThread()。getStackTrace()来获取类名和方法名来实现一个常见的LOGGER实例。是否可以在Java 1.8 / 1.9中使用Thread.currentThread()。getStackTrace()方法?

//My LoggerService Class
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggerService {
private static Logger LOGGER = LoggerFactory.getLogger(LoggerService.class);

    static String getClazz() {
        return Thread.currentThread().getStackTrace()[4].getClassName()+"::";
    }

    static String getMethod() {
        return Thread.currentThread().getStackTrace()[4].getMethodName()+"::";
    }

   public static void info(Object message) {
        if (LOGGER.isInfoEnabled()) {
            LOGGER.info(getClazz() +getMethod()+ message);
        }
    }
}

//Usage
class LoggerTest{ 
   public void loggerTest(){
      LoggerService.info("my message");
   }
}

0 个答案:

没有答案