如何使用New Relic来记录使用New Relic应用程序监控导致进程崩溃的错误?我正在尝试完成的关键事项是出现错误,导致进程仍然被记录,并在仪表板上过滤掉这些错误.
到目前为止,这是我的理解:
New Relic每分钟都会将数据传输到云端.在uncaughtException
发生事件时,这将导致当前等待传输的所有数据丢失.
有一个newrelic.noticeError()
应该采用第二个参数,允许您传递带有错误的自定义参数.新文件获取错误,但不是自定义参数.
简单示例:
var newrelic = require("newrelic");
var express = require("express");
var app = express();
app.get("/softFail/", function(req, res) {
res.send(500, "softFail");
});
app.get("/hardFail/", function(req, res) {
setImmediate(function() {
throw new Error("I failed");
});
});
app.listen(80);
process.on("uncaughtException", function(err) {
console.error("Uncaught Exception");
console.error(err.stack);
newrelic.addCustomParameter("crash", "true");
newrelic.noticeError(err);
console.log("sending errors to New Relic");
newrelic.agent.harvest(function() {
console.log("send complete, crashing process");
process.exit(1);
});
});
Run Code Online (Sandbox Code Playgroud)
如果我调用/ hardFail /我能够使用New Relic来至少记录错误,那么使用该代码块.没有uncaughtException
处理程序,我没有得到任何新的Relic.问题是我无法区分崩溃进程的错误和正常的HTTP 500错误.
这是我尝试过的东西:
如果我尝试添加{ crash : true }
到noticeError
通话中它似乎没有任何影响.
我试图做domain
而不是process.on
,这不会改变这种情况.
如果我试图改变name
错误,err.name = "CrashError"
那么错误根本就不会被传输.
如果我创建一个自定义错误类型,然后创建新的错误类型,并将堆栈跟踪复制到它,它仍然报告为类型Error
而不是prototype.name
我的新错误类型.
归档时间: |
|
查看次数: |
1580 次 |
最近记录: |