2

Improved Error Tracking for Node.js in AppSignal

 2 years ago
source link: https://blog.appsignal.com/2021/10/05/improved-error-tracking-for-node-in-appsignal.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Improved Error Tracking for Node.js in AppSignal

Luismi Ramírez on Oct 5, 2021

“I absolutely love AppSignal.”


Discover AppSignal

Good news for Node.js developers using AppSignal: a new version of our Node.js library is available on npm with improved error tracking.

We’ve added two new helpers to make your life easier as a Node.js developer. One helper allows you to track errors whenever you need to, no matter how many nested spans you have in your current context. The other lets you send an isolated error with no spans or context involved (for more information about spans, check out our docs). Please keep reading to see some usage examples!

Using tracer.setError(error) to Set Errors on Traces in Node.js

If you are a user of AppSignal’s Node.js library, you are probably familiar with the now deprecated helper span.addError(error). This helper allowed you to link an error to any span object. The main issue with this was that if the span calling the function was not a RootSpan, it was ignored. This made error tracking in complex nested contexts a problematic task.

Using the new tracer.setError(error) function will make everything easier and safer. If you want to send an error related to the current trace, you don’t have to search for the root span; the tracer object is always there to receive the error and set it on the current root span.

Example:

const tracer = appsignal.tracer();

tracer.withSpan(tracer.currentSpan(),  (span) => {
  try {
    throw new Error("Oh no!");
  } catch (err) {
    tracer.setError(err);
  }
});

Send Isolated Node.js Errors with tracer.sendError(error, fn())

This new helper is really useful for instrumentation that doesn’t automatically create AppSignal traces to profile, which means anything outside of a web or database context.

The function receives an error object and an optional callback function to set custom metadata as arguments if needed.

Example with metadata:

const tracer = appsignal.tracer();

try {
  throw new Error("Oh no!");
} catch (err) {
  tracer.sendError(err, span => {
    span.setName("daily.task"); // Set a recognizable action name
    span.set("user_id", user_id); // Set custom tags
  });
}

Example without metadata (note: this error is grouped in the same incident as errors of the same type without an action name):

const tracer = appsignal.tracer();

try {
  throw new Error("Oh no!")
} catch (err) {
  tracer.sendError(err);
}

Track Your Node.js Errors with a Stroopwaffle by Your Side 🍪

If you haven’t yet tried AppSignal for monitoring your Node.js apps, take five minutes and check it out. Here’s what you need to know:

  • Error monitoring is included alongside all of our features.
  • We have a free trial option that doesn’t require a credit card.
  • AppSignal supports Node.js, Ruby, and Elixir projects.
  • We’re free for open source & for good projects.
  • We ship stroopwafels to our trial users on request.

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK