将方法继承到 log4j2 pkg 中的记录器接口



我有一个方法

     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));
        }
    }
   }

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

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

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));
    }
}

最新更新