为了避免每个类的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");
}
}