繁体   English   中英

如何使用log4j获取Java中的当前类名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM