控制台日志记录

时间:2021-05-27 02:35:02

标签: node.js exception error-logging

我有一个(节点)JS 类:

class PayloadContainingError extends Error {
  constructor(msg, payload) {
    super(msg);
    this.payload = payload;
  }
}

payload 字段可能包含长字符串,即使在 MB 范围内。

如果我在某个时候console.log 这个类,我会在日志中得到完整的 payload。 相反,我希望它记录截断的部分(如 Linux head 命令)。

例如如果我console.error("Bad payload", instance_of_PayloadContainingError),而不是得到

Bad payload { Error: BAD
    at foo.bar
  payload:
    'a possibly million-character long line that pollutes my log'
}

我想要 console 登录

Bad payload { Error: BAD
    at foo.bar
  payload:
    'first 100 chars...'
}

这是否可以通过类/字段级别的一些魔法实现 - 无需重构任何(现有的和未来的)console.log 调用?

[编辑] 对于那些投票结束这个问题以支持“JavaScript toString() 覆盖”的人:根据我的理解,toString() 不是这里的问题 - console 似乎超出了 toString() 通常所做的, 在记录错误对象时(例如添加堆栈跟踪 - 我不想重新实现)。 (正如我在评论中提到的,覆盖 toString() 无论如何都不会改变输出。)

0 个答案:

没有答案