{"_id":"@arnob-b/observability","_rev":"4-0dd2712c9c06f235a1f0aca78f205d4e","name":"@arnob-b/observability","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@arnob-b/observability","version":"1.0.0","keywords":["observability","nodejs","winston","opentelemetry","electron","desktop application"],"author":{"name":"Arnob Bhakta"},"license":"MIT","_id":"@arnob-b/observability@1.0.0","maintainers":[{"name":"arnob-b","email":"arnobbhakta00@gmail.com"}],"dist":{"shasum":"2c6f6cc4ca4ea7a085a400893c33d97a3962c068","tarball":"https://registry.npmjs.org/@arnob-b/observability/-/observability-1.0.0.tgz","fileCount":22,"integrity":"sha512-TMEKdwTKZXNES7irK7bwlcxnXYzsAGEsSXvpWFgxH4wM+mFbnoLaasqv+fFFc9MI5jOduLblk9OqIRd0m8t/bA==","signatures":[{"sig":"MEQCICjAMp7bJvCs+1LCnW1s1kDsBCbiChs399qwlk088VyKAiAnSAmVTZL/ZKpCXGHBovnWrZugZ42cLHuz/gKhJt9UFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17148},"main":"./src/index.js","type":"commonjs","gitHead":"2a14ea8be562505ff5d282a7e85487b5bc768289","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"arnob-b","email":"arnobbhakta00@gmail.com"},"_npmVersion":"11.6.2","description":"observability for nodejs application using winston and opentelemetry","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@opentelemetry/instrumentation-http":"^0.212.0","@opentelemetry/instrumentation-express":"^0.59.0"},"peerDependencies":{"winston":"^3.19.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-node":"^0.212.0","winston-daily-rotate-file":"^5.0.0","@opentelemetry/instrumentation-undici":"^0.21.0"},"_npmOperationalInternal":{"tmp":"tmp/observability_1.0.0_1771244489962_0.013094933359482086","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arnob-b/observability","version":"1.0.1","keywords":["observability","nodejs","winston","opentelemetry","electron","desktop application"],"author":{"name":"Arnob Bhakta"},"license":"MIT","_id":"@arnob-b/observability@1.0.1","maintainers":[{"name":"arnob-b","email":"arnobbhakta00@gmail.com"}],"dist":{"shasum":"16f60da7b46b2b44bf52f36fa99a73c1c30ad255","tarball":"https://registry.npmjs.org/@arnob-b/observability/-/observability-1.0.1.tgz","fileCount":21,"integrity":"sha512-sWMSfFYWgN63WDMj/cNrFW16wYVXEaoP/uouZlvO5CkADf7q6W88T4d8dHZZoUlwRlhEId0S2w3k9wP9iuXIzg==","signatures":[{"sig":"MEQCIEV6/ndNIPTqKpcIjV77vHqAOEXa+bPBjJ9DNITQFPW/AiBUD6/odXrAKnK6xIeessl+JEuhlle/oFtHIiF5iNFBIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15093},"main":"./src/index.js","type":"commonjs","gitHead":"2a14ea8be562505ff5d282a7e85487b5bc768289","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"arnob-b","email":"arnobbhakta00@gmail.com"},"_npmVersion":"11.6.2","description":"observability for nodejs application using winston and opentelemetry","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"peerDependencies":{"winston":"^3.19.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-node":"^0.212.0","winston-daily-rotate-file":"^5.0.0","@opentelemetry/instrumentation-http":"^0.212.0","@opentelemetry/instrumentation-undici":"^0.21.0","@opentelemetry/instrumentation-express":"^0.59.0"},"_npmOperationalInternal":{"tmp":"tmp/observability_1.0.1_1771246204347_0.6510961469710954","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@arnob-b/observability","version":"1.0.2","keywords":["observability","nodejs","winston","opentelemetry","electron","desktop application"],"author":{"name":"Arnob Bhakta"},"license":"MIT","_id":"@arnob-b/observability@1.0.2","maintainers":[{"name":"arnob-b","email":"arnobbhakta00@gmail.com"}],"dist":{"shasum":"78820b2ff1e5c0bea8cfb51f6e22712a67aa94c5","tarball":"https://registry.npmjs.org/@arnob-b/observability/-/observability-1.0.2.tgz","fileCount":21,"integrity":"sha512-GjTn9bq2D+SmfWdcOaOdtaACnmYuAviCEniaGwtP9yeW9k+IXBGojKVAl5kkA5zwi/qo3YsYzowOJZjkkoxtBg==","signatures":[{"sig":"MEUCIQDSq8oOfeFHM3e16dmSDBkqvIR6RCQZeSto+IjxDjjp1AIgJFGcl9XqD+1DEEOztCBAVubayNw7bkUr2dLUAdmPe2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15877},"main":"./src/index.js","type":"commonjs","gitHead":"2a14ea8be562505ff5d282a7e85487b5bc768289","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"arnob-b","email":"arnobbhakta00@gmail.com"},"_npmVersion":"11.6.2","description":"observability for nodejs application using winston and opentelemetry","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"peerDependencies":{"winston":"^3.19.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-node":"^0.212.0","winston-daily-rotate-file":"^5.0.0","@opentelemetry/instrumentation-http":"^0.212.0","@opentelemetry/instrumentation-undici":"^0.21.0","@opentelemetry/instrumentation-express":"^0.59.0"},"_npmOperationalInternal":{"tmp":"tmp/observability_1.0.2_1771247805862_0.5962441931942695","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@arnob-b/observability","version":"1.0.3","description":"observability for nodejs application using winston and opentelemetry","keywords":["observability","nodejs","winston","opentelemetry","electron","desktop application"],"license":"MIT","author":{"name":"Arnob Bhakta"},"main":"./src/index.js","type":"commonjs","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@opentelemetry/instrumentation-undici":"^0.21.0","@opentelemetry/sdk-node":"^0.212.0","@opentelemetry/instrumentation-express":"^0.59.0","@opentelemetry/instrumentation-http":"^0.212.0","winston-daily-rotate-file":"^5.0.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","winston":"^3.19.0"},"gitHead":"f61f4562e9b5e6e53cec8386ec7f34ba715c3d08","_id":"@arnob-b/observability@1.0.3","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-1EB+cgnEU6pGT7k1pkb+t+gmy9vPaourWR52W7UA+8pxwlXmiMEc5GMuqwSzMveqi1HehxxnyYQjk6aIdmlpyw==","shasum":"15f06e5815c1af6bb5394b49187b2b519f58d016","tarball":"https://registry.npmjs.org/@arnob-b/observability/-/observability-1.0.3.tgz","fileCount":16,"unpackedSize":14141,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIF2nA/7GLFT4HF0FzVwRuAE8He6qgtm9gFp6tnEc/SA7AiEAp5mkz66ZuqsK8RGFaSAcHJc/XgakcIp27Z60HIV9610="}]},"_npmUser":{"name":"arnob-b","email":"arnobbhakta00@gmail.com"},"directories":{},"maintainers":[{"name":"arnob-b","email":"arnobbhakta00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/observability_1.0.3_1771270316831_0.5035714070215986"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-16T12:21:29.830Z","modified":"2026-02-16T19:31:57.088Z","1.0.0":"2026-02-16T12:21:30.094Z","1.0.1":"2026-02-16T12:50:04.487Z","1.0.2":"2026-02-16T13:16:46.015Z","1.0.3":"2026-02-16T19:31:56.973Z"},"author":{"name":"Arnob Bhakta"},"license":"MIT","keywords":["observability","nodejs","winston","opentelemetry","electron","desktop application"],"description":"observability for nodejs application using winston and opentelemetry","maintainers":[{"name":"arnob-b","email":"arnobbhakta00@gmail.com"}],"readme":"# Observability \n\n\n# usage\n## install dependencies\n```bash\nnpm install @arnob-b/observability\n```\n\n## initializing observability\n```javascript\nconst { Observability } = require(\"@arnob-b/observability\");\nObservability.init(OBSERVABILITY_CONFIG);\n```\n\n### Sample configuration \n```javascript\nconst path = require('path');\nconst fs = require('fs');\nconst LOG_ROTATION_SIZE = '1K'\nconst LOG_WATCHER_FILE_SIZE = '1K'\n\nconst LOG_DIR = \"server_logs\";\nif (!fs.existsSync(LOG_DIR)){\n\tfs.mkdirSync(LOG_DIR);\n}\nconst LOG_PATH=path.join(LOG_DIR,'main.%DATE%.log');\nconst WATCH_FILE_PATH =path.join(LOG_DIR,'watcher.log');\n\n\nconst OBSERVABILITY_CONFIG = {\n\tLOG:{\n\t\tLEVEL: 'debug',\n\t\tTRANSPORTS: {\n\t\t\tCONSOLE: {\n\t\t\t\tNAME: \"console-transport\",\n\t\t\t\tENABLED: true,\n\t\t\t},\n\t\t\tFILE: {\n\t\t\t\tNAME: \"file-rotation-transport\",\n\t\t\t\tENABLED: true,\n\t\t\t\tPATH : LOG_PATH,\n\t\t\t\tDIR : LOG_DIR,\n\t\t\t\tSIZE: LOG_ROTATION_SIZE,\n\t\t\t\tZIP_ARCHIVE: true,\n\t\t\t},\n\t\t\tSTREAM: {\n\t\t\t\tNAME: \"stream-transport\",\n\t\t\t\tENABLED: false,\n\t\t\t\tSTREAM_URL: 'http://localhost:3000/logs',\n\t\t\t\tHTTP_METHOD: 'POST',\n\t\t\t},\n\t\t\tWATCHER: {\n\t\t\t\tNAME: \"watcher-transport\",\n\t\t\t\tENABLED: true,\n\t\t\t\tPATH : WATCH_FILE_PATH,\n\t\t\t\tSIZE: LOG_WATCHER_FILE_SIZE,\n\t\t\t}\n\t\t}\n\t},\n\tOTEL: {\n\t\tSERVICE_NAME: 'electron-logger-service',\n\t\tSERVICE_VERSION: 'http://localhost:4317',\n\t\tINSTRUMENTS: {\n\t\t\tHTTP: {\n\t\t\t\tENABLED: false,\n\t\t\t},\n\t\t\tUNDICI: {\n\t\t\t\tENABLED: true,\n\t\t\t},\n\t\t\tEXPRESS: {\n\t\t\t\tENABLED: false,\n\t\t\t}\n\t\t}\n\t},\n}\nmodule.exports = OBSERVABILITY_CONFIG;\n```\n\n### predefined logger object from factory\n```javascript\nconst {logFunction} = require(\"@arnob-b/observability\")\nconst {normalizeData} = require(\"./helper.cjs\")\n\nconst log  = {\n\t\tinfo: (msg, data = null) => logFunction('info', msg, {process:'main', data:normalizeData(data)}),\n\t\terror: (msg, data = null) => logFunction('warn', msg, {process:'main', data:normalizeData(data)}),\n\t\tdebug: (msg, data = null) => logFunction('debug', msg, {process:'main', data:normalizeData(data)}),\n\t\twarn: (msg, data = null) => logFunction('warn', msg, {process:'main', data:normalizeData(data)}),\n\n\t\trenderer: {\n\t\t\tinfo: (msg, data) => logFunction('info', msg, {process:'renderer', data:normalizeData(data)}),\n\t\t\terror: (msg, data) => logFunction('error', msg, {process:'renderer', data:normalizeData(data)}),\n\t\t\twarn: (msg, data) => logFunction('warn', msg, {process:'renderer', data:normalizeData(data)}),\n\t\t\tdebug: (msg, data) => logFunction('debug', msg, {process:'renderer', data:normalizeData(data)}),\n\t\t}\n} \n\nmodule.exports = log;\n```\n\n### adding hooks for events emmited by tranports\n\n```javascript\nconst logger = Observability.getLogger(\"electron-application\");\nattachHooksOnTransport(\"file-rotation-transport\", {\n\t'archive': (oldFilename, newFilename) => {\n\t\tlogger.info(`Log file rotated: ${oldFilename} -> ${newFilename}`);\n\t}\n})\n```\n\n## using tracers\n```javascript\nconst {startTracedExecution, traceExecution, traceAsyncExecution} = require(\"@arnob-b/observability\");\n\nstartTracedExecution(\"main_execution\", async () => {\n\tlogger.debug(\"Starting main execution block\");\n\tstartTracedExecution(\"nested_execution\", async () => {\n\t\tlogger.debug(\"Starting main execution block\");\n\t})\n});\n\nconst asyncFunc = traceAsyncExecution(\"async_execution\", async () => {\n    logger.debug(\"Starting async execution block\");\n    await new Promise(resolve => setTimeout(resolve, 1000));\n    logger.debug(\"Finished async execution block\");\n});\nconst nonAsyncFunc = traceExecution(\"async_execution\", async () => {\n    logger.debug(\"Starting execution block\");\n    logger.debug(\"Finished execution block\");\n});\n\nasyncFunc();\nnonAsyncFunc();\n```\n\n\n# architechture\n\n","readmeFilename":"README.md"}