gpt4 book ai didi

java - Logback - 打印类名

转载 作者:行者123 更新时间:2023-12-02 11:52:14 26 4
gpt4 key购买 nike

我正在使用 logback 但是,而不是直接调用记录器类,我想要一个记录数据的自定义类/包装类。(这是用例所必需的)。我想打印调用此包装器的源类名称类而不是包装类。我尝试使用此类进行日志记录,但它总是打印包装类的类名。

class MyAppLogTest {

public static void main(String args[]) {

String msg="Some Msg";
ApplicationLogger.logData( "MyAppLogTest", "main",msg);
}
}


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

class ApplicationLogger {

private static Logger logger = null;

static {
logger = (Logger) LoggerFactory.getLogger(ApplicationLogger.class);

}

public static void logData(final String clazz, final String method,final String msg) {
logger.info(msg);
}
}

问候

最佳答案

这不是一个很好的解决方案,但您可以从堆栈中提取调用类并在日志消息中使用。

为此,您可以执行以下操作:

    final StringBuilder returnValue = new StringBuilder();
final Throwable throwable = new Throwable();

try
{
final StackTraceElement[] elements = throwable.getStackTrace();
final String methodName;

if ((elements != null) &&
(elements.length > 2))
{
methodName = elements[2].getMethodName();

returnValue.append(methodName);
returnValue.append("()");
}
}
catch (Exception ignoredException)
{
// use some default value.
}

return returnValue;

您所需的类的索引可能不是 2。

关于java - Logback - 打印类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47815881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com