diff --git a/package-lock.json b/package-lock.json index 97df60d..cd68852 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@middleware.io/node-apm", - "version": "1.2.11", + "version": "1.2.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@middleware.io/node-apm", - "version": "1.2.11", + "version": "1.2.12", "license": "ISC", "dependencies": { "@grpc/grpc-js": "^1.6.7", diff --git a/package.json b/package.json index 721f703..4c5f343 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@middleware.io/node-apm", - "version": "1.2.12", + "version": "1.2.13", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/packages/init.js b/packages/init.js index 247adb9..532e2fb 100644 --- a/packages/init.js +++ b/packages/init.js @@ -1,28 +1,62 @@ const otel = require('@opentelemetry/api') const {log} = require('./logger') let config; + +/** + * Initialize the APM with the provided configuration object + * @param {{serviceName: string, accessToken: string, target:string, DEBUG: otel.DiagLogLevel, collectMetrics: boolean, enableProfiling:boolean, consoleLog: boolean}} newConfig - Configuration object + * @returns {undefined} + */ module.exports.track = (newConfig = {}) => { config = require('./config').init(newConfig) require('./profiler').init(config); }; +/** + * Info level log + * @param {string} message - Log message + * @param {Object} attributes - Log attributes as key value pairs + * @returns {undefined} + */ module.exports.info = (message, attributes = {}) => { log('INFO', message, attributes); }; +/** + * Warn level log + * @param {string} message - Log message + * @param {Object} attributes - Log attributes as key value pairs + * @returns {undefined} + */ module.exports.warn = (message, attributes = {}) => { log('WARN', message, attributes); }; +/** + * Debug level log + * @param {string} message - Log message + * @param {Object} attributes - Log attributes as key value pairs + * @returns {undefined} + */ module.exports.debug = (message, attributes = {}) => { log('DEBUG', message, attributes); }; +/** + * Error level log + * @param {string} message - Log message + * @param {Object} attributes - Log attributes as key value pairs + * @returns {undefined} + */ module.exports.error = (message, attributes = {}) => { log('ERROR', message, attributes); }; - +/** + * Record an error in the current span + * @param {Error} e - Error object + * @returns {undefined} + */ module.exports.errorRecord = (e) => { const span = otel.trace.getSpan(otel.context.active()) if(span){ @@ -31,6 +65,12 @@ module.exports.errorRecord = (e) => { } }; +/** + * Set an attribute in the current span + * @param {string} name - Attribute key + * @param {any} value - Attribute value + * @returns {undefined} + */ module.exports.setAttribute = (name,value) => { const span = otel.trace.getSpan(otel.context.active()) if(span){ @@ -38,12 +78,21 @@ module.exports.setAttribute = (name,value) => { } }; +/** + * Creates a meter from the meter provider. Used to create custom metrics. + * @returns {otel.Meter} + */ module.exports.getMeter =() => { if (config.meterProvider){ return config.meterProvider.getMeter(config.serviceName) } return false } + +/** + * Creates a tracer from the tracer provider. Used to create custom spans. + * @returns {otel.Tracer} + */ module.exports.getTracer =() => { return otel.trace.getTracer(config.serviceName) }