{"_id":"strong-trace-transactionlog","_rev":"52-74da4aaf5bc7c9988279432910ea1361","name":"strong-trace-transactionlog","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"strong-trace-transactionlog","version":"1.0.0","keywords":["strongloop","transactions"],"author":{"name":"StrongLoop","email":"engineering@strongloop.com"},"license":{"url":"https://github.com/strongloop/strong-trace-transactionlog/blob/master/LICENSE","name":"StrongLoop"},"_id":"strong-trace-transactionlog@1.0.0","maintainers":[{"name":"setogit","email":"setogit@gmail.com"}],"homepage":"https://github.com/strongloop/strong-trace-transactionlog","bugs":{"url":"https://github.com/strongloop/strong-trace-transactionlog/issues"},"dist":{"shasum":"56802aa88bfc8e4a5b6dea903490c4ed5f08614a","tarball":"https://registry.npmjs.org/strong-trace-transactionlog/-/strong-trace-transactionlog-1.0.0.tgz","integrity":"sha512-7oE93pYiWE9Grnd3eU0edpQpArpPiuOiZuFGnrQ2KVMzD6ME59nD2opPQsYR9P8i6V4pg9CLNUFKSpLB95lyOw==","signatures":[{"sig":"MEYCIQD6YDexvF6hrM7yQv6NWfcgstOKgXxef1w4sZcMclqhEgIhAP7Nd6zXUzdEv2+qVSiJDCKYErTAwAof5n9hxDg9vgXH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"transactionlog.js","_from":".","_shasum":"56802aa88bfc8e4a5b6dea903490c4ed5f08614a","gitHead":"411950e51a0155daa03c676b38314eb774a0ffb3","scripts":{"test":"node test/"},"_npmUser":{"name":"setogit","email":"setogit@gmail.com"},"repository":{"url":"git://github.com/strongloop/strong-trace-transactionlog.git","type":"git"},"_npmVersion":"2.5.1","description":"Log transactions (by string id) and collect stats on measurements over time.","directories":{"test":"test"},"_nodeVersion":"0.10.33","dependencies":{"xtend":"^3.0.0","stats-incremental":"^1.0.0"},"jshintConfig":{"asi":true,"node":true,"eqeqeq":false,"eqnull":true,"newcap":false,"loopfunc":true,"validthis":true,"globalstrict":true},"devDependencies":{"tape":"^2.13.3"}},"1.0.2":{"name":"strong-trace-transactionlog","version":"1.0.2","keywords":["strongloop","transactions"],"author":{"name":"StrongLoop","email":"engineering@strongloop.com"},"license":{"url":"https://github.com/strongloop/strong-trace-transactionlog/blob/master/LICENSE","name":"StrongLoop"},"_id":"strong-trace-transactionlog@1.0.2","maintainers":[{"name":"setogit","email":"setogit@gmail.com"},{"name":"octet","email":"sam@strongloop.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"kraman","email":"kraman@strongloop.com"},{"name":"strongloop","email":"callback@strongloop.com"}],"homepage":"https://github.com/strongloop/strong-trace-transactionlog","bugs":{"url":"https://github.com/strongloop/strong-trace-transactionlog/issues"},"dist":{"shasum":"6a96f86a1573af40b139aa91002e8ca0da5dd530","tarball":"https://registry.npmjs.org/strong-trace-transactionlog/-/strong-trace-transactionlog-1.0.2.tgz","integrity":"sha512-1eek/4sorNaHiGDoDTMXDOnG8ZJb03iWRtK6/39WkVi8mcjpWfgYQK2js8dQsud0cIEED/RzvzaOXtsoSfMsug==","signatures":[{"sig":"MEYCIQCPUQxsF6xA8BFGx9AF4gRBGytAUi4B1KQRmWNH23s6UgIhAPlylqXUqUoWfgbD9Yz52vl9kHzUfXzn05N8NMOYZw5s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"transactionlog.js","_from":".","_shasum":"6a96f86a1573af40b139aa91002e8ca0da5dd530","gitHead":"8a9b94f56629d68a14fc405537467bc8b50f0f6e","scripts":{"test":"node test/"},"_npmUser":{"name":"octet","email":"sam@strongloop.com"},"repository":{"url":"git://github.com/strongloop/strong-trace-transactionlog.git","type":"git"},"_npmVersion":"2.11.0","description":"Log transactions (by string id) and collect stats on measurements over time.","directories":{"test":"test"},"_nodeVersion":"2.1.0","dependencies":{"xtend":"^3.0.0","stats-incremental":"^1.0.0"},"jshintConfig":{"asi":true,"node":true,"eqeqeq":false,"eqnull":true,"newcap":false,"loopfunc":true,"validthis":true,"globalstrict":true},"devDependencies":{"tape":"^2.13.3"}},"1.0.3":{"name":"strong-trace-transactionlog","version":"1.0.3","keywords":["strongloop","transactions"],"author":{"name":"StrongLoop","email":"engineering@strongloop.com"},"license":{"url":"https://github.com/strongloop/strong-trace-transactionlog/blob/master/LICENSE","name":"StrongLoop"},"_id":"strong-trace-transactionlog@1.0.3","maintainers":[{"name":"setogit","email":"setogit@gmail.com"},{"name":"octet","email":"sam@strongloop.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"kraman","email":"kraman@strongloop.com"},{"name":"strongloop","email":"callback@strongloop.com"}],"homepage":"https://github.com/strongloop/strong-trace-transactionlog","bugs":{"url":"https://github.com/strongloop/strong-trace-transactionlog/issues"},"dist":{"shasum":"bf3787fa91172ec97e68ccb980b8022a709c3b39","tarball":"https://registry.npmjs.org/strong-trace-transactionlog/-/strong-trace-transactionlog-1.0.3.tgz","integrity":"sha512-xCzqJB2INVKib885BwJnZZ6GhrFMw6vVfYDd9ZRh3Y//YfiH4YeieUeNtqDvojwWOP3fIoaczmteVy7P9ep3Yg==","signatures":[{"sig":"MEUCIDRaoR2SIO03X8+BGe9/lXStuYHFyPwt3vDpdKs311jLAiEA/CS3S5dTSZSqJFKbQzLNx/+AW7JnMLU4MJBal/12XLY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"transactionlog.js","_from":".","_shasum":"bf3787fa91172ec97e68ccb980b8022a709c3b39","gitHead":"4f5a8fbe9a5f2ea1e9ed5575d509ab5ef2b894df","scripts":{"test":"node test/"},"_npmUser":{"name":"octet","email":"sam@strongloop.com"},"repository":{"url":"git://github.com/strongloop/strong-trace-transactionlog.git","type":"git"},"_npmVersion":"2.11.0","description":"Log transactions (by string id) and collect stats on measurements over time.","directories":{"test":"test"},"_nodeVersion":"2.1.0","dependencies":{"xtend":"^3.0.0","stats-incremental":"^1.0.0"},"jshintConfig":{"asi":true,"node":true,"eqeqeq":false,"eqnull":true,"newcap":false,"loopfunc":true,"validthis":true,"globalstrict":true},"devDependencies":{"tape":"^2.13.3"}}},"time":{"created":"2015-04-01T19:37:55.881Z","modified":"2026-04-14T15:16:30.976Z","1.0.0":"2015-04-01T19:37:55.881Z","1.0.2":"2015-06-03T20:49:26.785Z","1.0.3":"2015-06-03T23:54:51.306Z"},"bugs":{"url":"https://github.com/strongloop/strong-trace-transactionlog/issues"},"author":{"name":"StrongLoop","email":"engineering@strongloop.com"},"license":{"url":"https://github.com/strongloop/strong-trace-transactionlog/blob/master/LICENSE","name":"StrongLoop"},"homepage":"https://github.com/strongloop/strong-trace-transactionlog","keywords":["strongloop","transactions"],"repository":{"url":"git://github.com/strongloop/strong-trace-transactionlog.git","type":"git"},"description":"Log transactions (by string id) and collect stats on measurements over time.","maintainers":[],"readme":"strong-trace-transactionlog\n===\n\nLogs transactions (by string id) and collects stats over time about them. This tool is part of the StrongTrace node.js instrumentation.\n\n```js\nvar TransactionLog = require(\"strong-trace-transactionlog\")\nvar tlog = new TransactionLog({\n  raw_subset: true,\n  subset_stats: true,\n  transactions_per_ms: true\n})\n\ntlog.update(\"/index.html\", 13)\ntlog.update(\"/index.html\", 22)\ntlog.update(\"/user/foo?blah=zap\", 101)\n\nvar subset = tlog.reapSubset()\nconsole.log(JSON.stringify(subset, null, 2))\n\n/*\n{\n  \"start\": 1403045590568,\n  \"end\": 1403045590569,\n  \"transactions\": {\n    \"/index.html\": {\n      \"stats\": {\n        \"n\": 2,\n        \"min\": 13,\n        \"max\": 22,\n        \"sum\": 35,\n        \"mean\": 17.5,\n        \"variance\": 20.25,\n        \"standard_deviation\": 4.5\n      },\n      \"subset\": [\n        13,\n        22\n      ],\n      \"subset_stats\": {\n        \"n\": 2,\n        \"min\": 13,\n        \"max\": 22,\n        \"sum\": 35,\n        \"mean\": 17.5,\n        \"variance\": 20.25,\n        \"standard_deviation\": 4.5\n      },\n      \"transactions_per_ms\": {\n        \"n\": 1,\n        \"min\": 2,\n        \"max\": 2,\n        \"sum\": 2,\n        \"mean\": 2,\n        \"variance\": 0,\n        \"standard_deviation\": 0\n      }\n    },\n    \"/user/foo?blah=zap\": {\n      \"stats\": {\n        \"n\": 1,\n        \"min\": 101,\n        \"max\": 101,\n        \"sum\": 101,\n        \"mean\": 101,\n        \"variance\": 0,\n        \"standard_deviation\": 0\n      },\n      \"subset\": [\n        101\n      ],\n      \"subset_stats\": {\n        \"n\": 1,\n        \"min\": 101,\n        \"max\": 101,\n        \"sum\": 101,\n        \"mean\": 101,\n        \"variance\": 0,\n        \"standard_deviation\": 0\n      },\n      \"transactions_per_ms\": {\n        \"n\": 1,\n        \"min\": 1,\n        \"max\": 1,\n        \"sum\": 1,\n        \"mean\": 1,\n        \"variance\": 0,\n        \"standard_deviation\": 0\n      }\n    }\n  }\n}\n*/\n\nsetTimeout(function () {\n  tlog.update(\"/index.html\", 50)\n  var subset = tlog.reapSubset()\n  console.log(JSON.stringify(subset, null, 2))\n}, 1000)\n\n/*\n{\n  \"start\": 1403045590568,\n  \"end\": 1403045591581,\n  \"transactions\": {\n    \"/index.html\": {\n      \"stats\": {\n        \"n\": 3,\n        \"min\": 13,\n        \"max\": 50,\n        \"sum\": 85,\n        \"mean\": 28.333333333333336,\n        \"variance\": 248.2222222222222,\n        \"standard_deviation\": 15.755069730795297\n      },\n      \"subset\": [\n        50\n      ],\n      \"subset_stats\": {\n        \"n\": 1,\n        \"min\": 50,\n        \"max\": 50,\n        \"sum\": 50,\n        \"mean\": 50,\n        \"variance\": 0,\n        \"standard_deviation\": 0\n      },\n      \"transactions_per_ms\": {\n        \"n\": 2,\n        \"min\": 0.0009871668311944718,\n        \"max\": 2,\n        \"sum\": 2.0009871668311945,\n        \"mean\": 1.0004935834155972,\n        \"variance\": 0.9990130767933937,\n        \"standard_deviation\": 0.9995064165844028\n      }\n    }\n  }\n}\n*/\n\n```\n\nAPI\n===\n\n`var transactionLog = require(\"concurix-transactionlog\")(config)`\n---\n\nCreate a new transaction log\n\nconfig:\n  * raw_subset [false]: show the raw values for each member of this subset\n  * subset_stats: [true]: show stats for just this subset\n  * transactions_per_ms: [true]: show transactions per millisecond stats\n\n`transactionLog.update(transactionId, measurement)`\n---\n\nLog an instance of this transaction. `transactionId` should be a string and `measurement` should be a number.\n\n`transactionLog.reapSubset()`\n---\n\nExtract the current subset of the transaction log and clear the subset buffer.\n\nWhen reaped, statistics for each transaction id that was **active** in this subset is returned, with optional fields depending on the `config` provided.\n  * stats: statistics for this tansaction id for all history\n  * subset: raw values for this subset\n  * subset_stats: statistics for just this subset\n  * transactions_per_ms: Instances of this transaction id per millisecond, sampled at each `reapSubset()` call for all history.\n\nLong-term stats are kept intact between `reapSubset` calls.\n\n`transactionLog.clearAll()`\n---\n\nCompletely empty the transaction log of all transactions and long-term stats.\n","readmeFilename":"README.md"}