无论如何有将javascript控制台日志推送到哨兵

时间:2019-01-21 04:43:11

标签: reactjs sentry

我在我的应用程序的人工位置使用console.error()console.warn()来跟踪失败的代码。反正有自动将这些记录到Sentry的方法。 https://sentry.io

这是一个React应用,看来他们建议的componentDidCatch()方法只能捕获异常。

2 个答案:

答案 0 :(得分:1)

一种方法是使用您自己的自定义实现覆盖console.errorconsole.warn,因此,只要代码的任何部分调用console.errorconsole.warn,调用将被您的自定义函数拦截,您可以在其中执行所需的操作。

以下示例显示了console.error方法的自定义实现。

//Store the original reference of console.error
var orgError = console.error;
//Overwirte the default function
console.error = function(error) {
  //All error will be intercepted here
  alert("Intercepted -> " + error);
  //Invoke the original console.error to show the message in console
  return orgError(error);
}
try {
  //Following line will throw error
  nonExistentFunction();
} catch (error) {
  console.error(error);
}

答案 1 :(得分:0)

此问题的选定答案通常是反模式。您永远不想覆盖浏览器中的标准 API,因为您的应用程序中的其他代码实现可能期望行为是特定的方式,并且可能会导致错误。此外,未来为您的代码库做出贡献的开发人员可能没有意识到您正在劫持标准并最终错误地使用它。

看看我专门为解决这些类型的问题而创建的一个开源项目:https://adzejs.com

使用 Adze,您可以创建日志侦听器,每当触发目标级别的特定日志时都会触发这些侦听器。然后,您可以从侦听器向 Sentry 触发事件。