[英]How to get the current class name in Java with log4j
我使用log4j进行日志记录,为了在执行时获取各个方法的类名,我得到了一些使用SecurityManager获取类名的常用方法,但我不想使用SecurityManager,是他们的任何其他方式在运行时获取类名。 此外,我不想编写代码( MyClass.getClassName
)来获取每个类中的类名。
class log extends SecurityManager {
public String getClassName() {
return getClassContext()[3].getName();
}
}
静态记录器的解决方案:
private static final Logger LOG = Logger.getLogger(new Object() { }.getClass().getEnclosingClass());
对于全名(带包):
this.getClass().getName();
对于类的名称(只是类名而不是更多):
this.getClass().getSimpleName();
您也可以使用类对象本身接收Logger
,而不是接收类名:
public static Logger getLogger(Class clazz)
这就是它的用法:
private static final Logger logger = Logger.getLogger(MyClass.class);
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html#getLogger(java.lang.Class)
您可以在appender配置中将%l
添加到PatternLayout以获取日志语句的调用类。
我想你需要调用你的日志类的类的类名?
尝试这个:
StackTraceElement stackTraceElement = new Throwable().getStackTrace()[3];
你也可以这样做:
private static final String CLASS_NAME = MyClass.class.getName();
log.debug(new LogRecord(CLASS_NAME," Success = "+isSuccess));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.