使用自定义日志记录覆盖Chrome控制台日志位置

6
当你在Chrome中使用console.log('hi')时,它会打印出日志的来源位置。我现在遇到的问题是,我正在拦截Chrome中的控制台日志,如下所示。
this.originalConsoleLog = console.log;

console.log = this.log.bind(this);

function log(message?: any, ...optionalParams: any[]): void {
  this.originalConsoleLog(message, optionalParams);
  this.splunkLogger('LOG', message, optionalParams);
}

现在在 Chrome 中,我记录的所有内容都来自这个位置,这真的很烦人,因为现在很难找出我的问题所在。

以下是一个示例:enter image description here

我不希望它显示 logger.service.ts:36,而是应该显示 desktop.ts:24 或者 funtime.ts:69,目前的形式一点也不有用。也许如果我使用 this.originalConsoleLog(arguments); 来调用它,它会忽略我的日志函数?


1
那可能是不可能的。 - SLaks
你可能可以使用一些技巧来“打印出”调用者的位置,但它不会像正常控制台中那样成为可点击的链接(而且你仍然会看到 logger.service...)。 - CertainPerformance
虽然有些hacky,但你可以使用console.warn和一个任意的消息来创建一个带有堆栈属性的new Error。这将记录一个可展开的消息,其中包含可点击的堆栈跟踪。它不会改变右侧的文件链接,但至少有点作用。 - Moritz Roessler
1个回答

0

正如@slacks所说,这是“不可能的”

我发现做到这一点最好的方法是在我的日志服务中添加条件,检查您是否为本地用户,如果是本地用户,则不覆盖记录。任何对console.log的覆盖都会使问题更加复杂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接