【问题标题】:How to replace printStackTrace with log.error in the below method如何在下面的方法中用 log.error 替换 printStackTrace
【发布时间】:2020-11-05 15:55:36
【问题描述】:

请建议我如何用 log.error 替换 printstacktace 行

public class extends Throwable {
    
    private Throwable _prev;

    public synchronized Throwable getPrevThrowable() {
       return _prev;
    }
    
    public void printStackTrace(PrintStream ps) {
       super.printStackTrace(ps);
       Throwable t;
       if ((t = getPrevThrowable()) != null) {
           t.printStackTrace(ps);
       }
            }

我可以像下面这样实现吗??

public class extends Throwable {
        
            public void printStackTrace(PrintStream ps) {
                log.error(ps);
                Throwable t;
                if ((t = getPrevThrowable()) != null) {
                    log.error(t);
                }
            }

【问题讨论】:

  • 只需将异常传递给您的记录器。您正在使用的日志框架应该提供有关此的文档。

标签: javascript java log4j log4j2 printstacktrace


【解决方案1】:

我不确定 getPrevThrowable() 能做什么,但你可以做

Throwable t;
if ((t = getPrevThrowable()) != null {
    logger.error("", t);
}

【讨论】:

  • 谢谢你,那行 super.printStackTrace() 怎么样?
  • 怎么样?首先,不可能知道 super.printStackTrace() 做了什么,因为您还没有确定这是什么类或它扩展了什么。您询问了如何将 printStackTrace 行替换为记录错误。这就是它在不知道其他任何事情的情况下所做的事情。如果我们假设这是一个 Throwable(这是一个延伸,因为 getPrevThrowable() 不是 Throwable 的方法),那么您将使用 logger.error("", this)。但是如果之前的 Throwable 链接到当前的 Throwable 就不需要单独记录了。
猜你喜欢
  • 2014-02-18
  • 2011-02-03
  • 2014-03-09
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多