gpt4 book ai didi

java - log4j2 pkg 中记录器接口(interface)的继承方法

转载 作者:行者123 更新时间:2023-12-01 11:47:52 25 4
gpt4 key购买 nike

我有一个方法

     import org.apache.logging.log4j.Logger;
public class SendEmail
{
Logger log = LogManager.getRootLogger();
public static String getStackTrace(final Throwable throwable)
{
final StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw, true);
throwable.printStackTrace(pw);
return sw.getBuffer().toString();
}
public static void main(String[] args)
{
try
{
//Some Code
}
catch (Exception e)
{
log.error(getStackTrace(e));
}
}
}

我想通过继承向 Logger 添加 getStackTrace() 方法(注意:Logger 是接口(interface)而不是类),这样我就可以通过日志对象调用它,这样我就可以替换 log.error(getStackTrace(e));通过 log.error(log.getStackTrace(e)) ;有什么帮助吗?

最佳答案

简单的方法是使用logger.error("message", exception)但如果您想要自定义方法,您将需要创建自己的类并将原始记录器保留在其中。有错误和调试方法,但如果您需要其他方法,则需要自己创建(例如 warn)。

public class MyLogger {
final Logger target;

public MyLogger(Logger target) {
this.target = target;
}

public void error(Object message) {
target.error(message);
}

public void debug(Object message) {
target.debug(message);
}

//...

public String getStackTrace(final Throwable throwable) {
final StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw, true);
throwable.printStackTrace(pw);
return sw.getBuffer().toString();
}
}

在另一个类中:

private static final MyLogger logger = new MyLogger(LogManager.getRootLogger());

public void someMethod() {
try {
//
}
catch (Exception e) {
logger.error(logger.getStackTrace(e));
}
}

关于java - log4j2 pkg 中记录器接口(interface)的继承方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014077/

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