For the record, here is what I did
To identify user in Sentry
// identify user based on jwt
app.use((req, res, next) => {
if (req.headers.authorization) {
const [, jwtToken] = req.headers.authorization.split(' ');
const decodedToken = jwt.decode(jwtToken, {
complete: true,
});
if (decodedToken.payload.email) {
Sentry.setUser({ email: decodedToken.payload.email });
}
}
next();
});
To report error in Sentry
// on createAgent function
const agent = createAgent({
logger: (level, data, error) => {
// Default logger copy pasted from: https://github.com/ForestAdmin/agent-nodejs/blob/95ee789933417ccde1be26c0ba587b38fd7d4264/packages/agent/src/utils/options-validator.ts#LL20C8-L20C8
const loggerLevel = 'Info';
const loggerPrefix = {
Debug: '\x1b[34mdebug:\x1b[0m',
Info: '\x1b[32minfo:\x1b[0m',
Warn: '\x1b[33mwarning:\x1b[0m',
Error: '\x1b[31merror:\x1b[0m',
};
const levels = Object.keys(loggerPrefix);
if (levels.indexOf(level) >= levels.indexOf(loggerLevel)) {
// eslint-disable-next-line no-console
console.error(loggerPrefix[level], data);
}
// end of default logger
if (level === 'Warn' || level === 'Error') {
Sentry.captureException(error);
}
},
})