diff --git a/package-lock.json b/package-lock.json index 036c0d6..b9d6b7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@hibas123/logging": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@hibas123/logging/-/logging-2.1.5.tgz", - "integrity": "sha512-sZ+BVepmWz8AmRXd1J4i9Ut+XxpkUwjfC0zx3gYDQhRElPg56+vGTm1AUwBxiYmAqz8L6hTz62OVF1PFetXyqw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@hibas123/logging/-/logging-2.2.2.tgz", + "integrity": "sha512-45ajce5iFAKIYK74VfNVWtUCkk3nXSV2pCrnY7edszPrME8HWgrrkHMxc4yo3cIBpZNP9WN3O2TnDseasCvcjw==", "requires": { "@hibas123/utils": "^2.2.3" } @@ -18,9 +18,9 @@ "integrity": "sha512-yAywWMDbt5fmid9E7IRXeCazdbwfC339LhRFIryXab0FqlQzUrm8ggdJaSzWXYC7m3ijdekSezlBno/vOL/L2Q==" }, "@types/node": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.7.tgz", - "integrity": "sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.0.tgz", + "integrity": "sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ==", "dev": true }, "abbrev": { @@ -321,9 +321,9 @@ "dev": true }, "date-fns": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.10.0.tgz", - "integrity": "sha512-EhfEKevYGWhWlZbNeplfhIU/+N+x0iCIx7VzKlXma2EdQyznVlZhCptXUY+BegNpPW2kjdx15Rvq503YcXXrcA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.11.1.tgz", + "integrity": "sha512-3RdUoinZ43URd2MJcquzBbDQo+J87cSzB8NkXdZiN5ia1UNyep0oCyitfiL88+R7clGTeq/RniXAc16gWyAu1w==", "dev": true }, "debug": { @@ -436,9 +436,9 @@ "dev": true }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -686,9 +686,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { @@ -769,9 +769,9 @@ "dev": true }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -839,9 +839,9 @@ "dev": true }, "picomatch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", - "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "pify": { @@ -941,9 +941,9 @@ } }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -992,9 +992,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "spawn-command": { @@ -1297,9 +1297,9 @@ "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { "cliui": "^5.0.0", @@ -1311,13 +1311,13 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 3b72aa7..d5940cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hibas123/nodelogging", - "version": "2.1.5", + "version": "2.2.2", "description": "", "main": "out/index.js", "types": "out/index.d.ts", @@ -26,13 +26,13 @@ "readme.md" ], "devDependencies": { - "@types/node": "^13.7.7", + "@types/node": "^13.11.0", "concurrently": "^5.1.0", "nodemon": "^2.0.2", "typescript": "^3.8.3" }, "dependencies": { - "@hibas123/logging": "^2.1.5", + "@hibas123/logging": "^2.2.2", "@hibas123/utils": "^2.2.3" } } diff --git a/src/index.ts b/src/index.ts index 40670a8..2382c69 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,23 +1,27 @@ export { LoggingFiles } from "./filewriter"; import { LoggingFiles } from "./filewriter"; -import { LoggingBase as LoggingBaseOriginal, LoggingBaseOptions } from "@hibas123/logging"; - +import { + LoggingBase as LoggingBaseOriginal, + LoggingBaseOptions, +} from "@hibas123/logging"; export interface LoggingOptions extends LoggingBaseOptions { - files: boolean | { - /** - * Filename/path of the logfile. Skip if generated with name. - * - * If not wanted pass null - */ - logfile?: string | null; - /** - * Filename/path of the logfile. Skip if generated with name. - * - * If not wanted pass null - */ - errorfile?: string | null; - } + files: + | boolean + | { + /** + * Filename/path of the logfile. Skip if generated with name. + * + * If not wanted pass null + */ + logfile?: string | null; + /** + * Filename/path of the logfile. Skip if generated with name. + * + * If not wanted pass null + */ + errorfile?: string | null; + }; } export class LoggingBase extends LoggingBaseOriginal { @@ -33,17 +37,30 @@ export class LoggingBase extends LoggingBaseOriginal { } let name = this.name ? "." + this.name : ""; - if (!logfile && logfile !== null) - logfile = `./logs/all${name}.log`; + if (!logfile && logfile !== null) logfile = `./logs/all${name}.log`; if (!errorfile && errorfile !== null) errorfile = `./logs/error${name}.log`; - if (logfile) - this.addAdapter(new LoggingFiles(logfile)); + if (logfile) this.addAdapter(new LoggingFiles(logfile)); + if (errorfile) this.addAdapter(new LoggingFiles(errorfile, true)); + } + } - if (errorfile) - this.addAdapter(new LoggingFiles(errorfile, true)); + protected getCurrentTime() { + if (process.hrtime.bigint) { + return process.hrtime.bigint(); + } else { + return process.hrtime(); + } + } + + protected getTimeDiff(start) { + if (process.hrtime.bigint) { + return Number((process.hrtime.bigint() - start) / BigInt(1000)) / 1000; + } else { + let diff = process.hrtime(start); + return diff[0] * 1000 + diff[1] / 1000000; } } } @@ -53,6 +70,3 @@ if (process.env.LOGGING_NO_DEFAULT !== "true") { Logging = new LoggingBase(); } export default Logging; - - - diff --git a/src/test.ts b/src/test.ts index 2e34fd1..cc25f87 100644 --- a/src/test.ts +++ b/src/test.ts @@ -6,9 +6,11 @@ const deleteFolderRecursive = function (path: string) { if (fs.existsSync(path)) { fs.readdirSync(path).forEach(function (file, index) { var curPath = path + "/" + file; - if (fs.lstatSync(curPath).isDirectory()) { // recurse + if (fs.lstatSync(curPath).isDirectory()) { + // recurse deleteFolderRecursive(curPath); - } else { // delete file + } else { + // delete file fs.unlinkSync(curPath); } }); @@ -16,61 +18,70 @@ const deleteFolderRecursive = function (path: string) { } }; -deleteFolderRecursive("./logs") +deleteFolderRecursive("./logs"); -Logging.log("test") +Logging.log("test"); Logging.log("i", "am", { a: "an" }, 1000); Logging.error(new Error("fehler 001")); Logging.debug("Some Debug infos"); Logging.errorMessage("i", "am", "an", "error"); -Logging.log("\x1b[31m\x1b[31m\x1b[31m\x1b[31m\x1b[31m\x1b[31m TEST \x1b[31m\x1b[31m\x1b[31m") +Logging.log( + "\x1b[31m\x1b[31m\x1b[31m\x1b[31m\x1b[31m\x1b[31m TEST \x1b[31m\x1b[31m\x1b[31m" +); -let err = new Error() -if (typeof err.stack !== "string") console.log("Stacktrace invalid", err.stack) +let err = new Error(); +if (typeof err.stack !== "string") console.log("Stacktrace invalid", err.stack); let cus = new LoggingBase({ name: "test" }); -cus.log("Hello from custom Logger") +cus.log("Hello from custom Logger"); let cus2 = new LoggingBase("test2"); -cus2.log("Hello from custom Logger 2") +cus2.log("Hello from custom Logger 2"); let cus22 = new LoggingBase("test2"); -cus22.log("Hello from custom Logger 22") -cus2.log("Hello from custom Logger 2") -cus22.log("Hello from custom Logger 22") -cus2.log("Hello from custom Logger 2") -cus22.log("Hello from custom Logger 22") -cus2.log("Hello from custom Logger 2") -cus22.log("Hello from custom Logger 22") -cus2.log("Hello from custom Logger 2") -cus22.log("Hello from custom Logger 22") -cus2.log("Hello from custom Logger 2") +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); const BenchmarkLogger = new LoggingBase({ console: false, - name: "bench" -}) + name: "bench", +}); async function benchmark(count: number, message_size: number) { await BenchmarkLogger.waitForSetup(); - const randData = randomBytes(message_size).toString("hex") + const randData = randomBytes(message_size).toString("hex"); const t = process.hrtime(); for (let i = 0; i < count; i++) { - BenchmarkLogger.log(randData) + BenchmarkLogger.log(randData); } const diff = process.hrtime(t); const NS_PER_SEC = 1e9; await BenchmarkLogger.waitForSetup(); const ns = diff[0] * NS_PER_SEC + diff[1]; - console.log(`Benchmark took ${ns / 1000000}ms for ${count} messages with a size of ${message_size} characters`); - console.log(`This is equal to ${(ns / 1000000) / count} ms per message`) + console.log( + `Benchmark took ${ + ns / 1000000 + }ms for ${count} messages with a size of ${message_size} characters` + ); + console.log(`This is equal to ${ns / 1000000 / count} ms per message`); } Logging.waitForSetup().then(async () => { return; - console.log("Large data benchmark:") + console.log("Large data benchmark:"); await benchmark(7000, 50000); - console.log("Realdata data benchmark:") - await benchmark(100000, 100) -}); \ No newline at end of file + console.log("Realdata data benchmark:"); + await benchmark(100000, 100); +}); + +const timer = Logging.time("timer1", "Test Timer"); +setTimeout(() => timer.end(), 1000);