@instana/collector
Version:
The Instana Node.js metrics and trace data collector
52 lines (42 loc) • 1.02 kB
JavaScript
/*
* (c) Copyright IBM Corp. 2021
* (c) Copyright Instana Inc. and contributors 2016
*/
;
const log = require('./log');
const pidStore = require('../pidStore/internalPidStore');
/** @type {NodeJS.WritableStream} */
module.exports = {
/**
* @param {*} record
*/
write: function write(record) {
try {
record = JSON.parse(record);
} catch (error) {
// ignore
}
const logLevel = getAgentLogLevel(record.level);
let message = `Node.js collector (pid: ${process.pid}, reporting pid: ${pidStore.pid}): ${record.msg}`;
let stack = null;
if (record.err) {
message += `: ${record.err.message}`;
stack = record.err.stack;
}
log(logLevel, message, stack);
}
};
/**
* @param {number} level
* @returns {'debug' | 'info' | 'warning' | 'error'}
*/
function getAgentLogLevel(level) {
if (level < 30) {
return 'debug';
} else if (level < 40) {
return 'info';
} else if (level < 50) {
return 'warning';
}
return 'error';
}