From e416bbf00b21d7fced4c56b5f7eaaf0d620f102c Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Mon, 10 Jul 2023 13:13:24 -0400 Subject: [PATCH] User logger --- package-lock.json | 251 +++++++++++++++++++++++- package.json | 4 +- src/controllers/PrinterController.ts | 3 +- src/index.ts | 4 +- src/jobs/discoverPrinters.ts | 3 +- src/jobs/updatePrinterStatus.ts | 3 +- src/log.ts | 7 + src/middlewares/loggerMiddleware.ts | 11 +- src/services/PrinterDiscoveryService.ts | 25 ++- src/services/PrinterStatusService.ts | 7 +- 10 files changed, 296 insertions(+), 22 deletions(-) create mode 100644 src/log.ts diff --git a/package-lock.json b/package-lock.json index fcff127..961589a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,12 +24,14 @@ "jsonwebtoken": "^9.0.0", "ldapts": "^4.2.6", "net-snmp": "^3.9.6", - "netmask": "^2.0.2" + "netmask": "^2.0.2", + "npmlog": "^7.0.1" }, "devDependencies": { "@types/express": "^4.17.17", "@types/jsonwebtoken": "^9.0.2", "@types/node": "^20.3.1", + "@types/npmlog": "^4.1.4", "nodemon": "^2.0.22", "prettier": "^2.8.8", "prisma": "^4.15.0", @@ -859,6 +861,12 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz", "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==" }, + "node_modules/@types/npmlog": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", + "dev": true + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -1346,6 +1354,17 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1452,6 +1471,23 @@ "svg.select.js": "^3.0.1" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz", + "integrity": "sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -1497,6 +1533,25 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1595,6 +1650,29 @@ "node": ">=12.17.0 <13.0.0-0||>=13.2.0" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -1763,6 +1841,14 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, "node_modules/combine-errors": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", @@ -1810,6 +1896,11 @@ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1952,6 +2043,11 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2325,6 +2421,22 @@ "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -2668,6 +2780,42 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/gauge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", + "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/gauge/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -2848,6 +2996,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -2891,6 +3044,25 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -3567,6 +3739,20 @@ "node": ">=0.10.0" } }, + "node_modules/npmlog": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -3973,6 +4159,14 @@ "node": ">=14.17" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/property-expr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", @@ -4061,6 +4255,21 @@ "node": ">= 0.8" } }, + "node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4288,6 +4497,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -4339,7 +4553,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", - "dev": true, "engines": { "node": ">=14" }, @@ -4431,6 +4644,14 @@ "resolved": "https://registry.npmjs.org/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz", "integrity": "sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==" }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -5152,6 +5373,32 @@ "node": ">= 8" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/package.json b/package.json index 58ae3c4..b8bbc48 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@types/express": "^4.17.17", "@types/jsonwebtoken": "^9.0.2", "@types/node": "^20.3.1", + "@types/npmlog": "^4.1.4", "nodemon": "^2.0.22", "prettier": "^2.8.8", "prisma": "^4.15.0", @@ -50,6 +51,7 @@ "jsonwebtoken": "^9.0.0", "ldapts": "^4.2.6", "net-snmp": "^3.9.6", - "netmask": "^2.0.2" + "netmask": "^2.0.2", + "npmlog": "^7.0.1" } } diff --git a/src/controllers/PrinterController.ts b/src/controllers/PrinterController.ts index 6499d40..bf78e39 100644 --- a/src/controllers/PrinterController.ts +++ b/src/controllers/PrinterController.ts @@ -5,6 +5,7 @@ import { prisma } from '../prisma.js' import { distributedCopy } from '../utils/distributedCopy.js' import { PrinterStatusService } from '../services/PrinterStatusService.js' +import log from '../log.js' const router = Router() @@ -16,7 +17,7 @@ class PrinterController { if (force) { const printers = await prisma.printer.findMany() - console.log(`Updating printers status ${new Date().toLocaleString()}`) + log.info(new Date().toLocaleString(), `Updating printers status`) Promise.allSettled( printers.map(async printer => { diff --git a/src/index.ts b/src/index.ts index 6bf4f0b..a1348db 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,12 +2,14 @@ import 'dotenv/config' import { app } from './server.js' import { jobs } from './jobs.js' +import log from './log.js' const PORT = 8000 // Start server app.listen(PORT, () => { - console.log( + log.info( + new Date().toLocaleString(), `Running in ${ process.env.NODE_ENV == 'production' ? 'PRODUCTION' : 'DEVELOPMENT' } mode. \nServer listening http://127.0.0.1:${PORT}` diff --git a/src/jobs/discoverPrinters.ts b/src/jobs/discoverPrinters.ts index f486dec..5a6ea29 100644 --- a/src/jobs/discoverPrinters.ts +++ b/src/jobs/discoverPrinters.ts @@ -1,7 +1,8 @@ +import log from '../log.js' import { PrinterDiscoveryService } from '../services/PrinterDiscoveryService.js' async function discoverPrinters() { - console.log(`Discovering printers ${new Date().toLocaleString()}`) + log.info(new Date().toLocaleString(), `Discovering printers`) await PrinterDiscoveryService.discoverAll() } diff --git a/src/jobs/updatePrinterStatus.ts b/src/jobs/updatePrinterStatus.ts index ac2878f..aeb5313 100644 --- a/src/jobs/updatePrinterStatus.ts +++ b/src/jobs/updatePrinterStatus.ts @@ -1,8 +1,9 @@ +import log from '../log.js' import { prisma } from '../prisma.js' import { PrinterStatusService } from '../services/PrinterStatusService.js' function updatePrinterStatus() { - console.log(`Updating printers status ${new Date().toLocaleString()}`) + log.info(new Date().toLocaleString(), `Updating printers status`) prisma.printer.findMany().then(printers => { printers.forEach(async printer => { diff --git a/src/log.ts b/src/log.ts new file mode 100644 index 0000000..c9ca641 --- /dev/null +++ b/src/log.ts @@ -0,0 +1,7 @@ +import log from 'npmlog' + +log.level = process.env.LOG_LEVEL ? process.env.LOG_LEVEL : 'info' + +log.enableColor() + +export default log diff --git a/src/middlewares/loggerMiddleware.ts b/src/middlewares/loggerMiddleware.ts index f059260..21a55d4 100644 --- a/src/middlewares/loggerMiddleware.ts +++ b/src/middlewares/loggerMiddleware.ts @@ -1,17 +1,16 @@ import { Response, NextFunction, Request } from 'express' +import log from '../log.js' export async function loggerMiddleware( req: Request, res: Response, next: NextFunction ) { - console.log( + log.http( 'Request:', - new Date().toLocaleString(), - req.method, - req.url, - res.locals.user?.username, - res.locals.user?.displayName + `${new Date().toLocaleString()} ${req.method} ${req.url} ${ + res.locals.user?.username + } ${res.locals.user?.displayName}` ) next() } diff --git a/src/services/PrinterDiscoveryService.ts b/src/services/PrinterDiscoveryService.ts index 9caeec1..e06a393 100644 --- a/src/services/PrinterDiscoveryService.ts +++ b/src/services/PrinterDiscoveryService.ts @@ -3,6 +3,7 @@ import netmask from 'netmask' import { PrinterStatusService } from './PrinterStatusService.js' import { prisma } from '../prisma.js' import { Printer } from '@prisma/client' +import log from '../log.js' export class PrinterDiscoveryService { private static async isPrinter(ip: string) { @@ -55,15 +56,21 @@ export class PrinterDiscoveryService { try { if (await PrinterDiscoveryService.isPrinter(ip)) { printers.push(ip) - console.log(`Found printer at IP: ${ip}`) + log.info( + new Date().toLocaleString(), + `Found printer at IP: ${ip}` + ) } } catch (error: any) { - console.log(`Error checking ${ip}: ${error.message}`) + log.error( + new Date().toLocaleString(), + `Error checking ${ip}: ${error.message}` + ) } }) ) - } catch (err) { - console.log(err) + } catch (error: any) { + log.error(new Date().toLocaleString(), error) } return printers @@ -76,15 +83,19 @@ export class PrinterDiscoveryService { const discoveredPrintersIPs: string[] = [] for (const network of networks) { - console.log('Discovering printers for network', network.cidr) + log.info( + new Date().toLocaleString(), + 'Discovering printers for network', + network.cidr + ) try { const discoveredPrintersIPsForNetwork = await PrinterDiscoveryService.discovery(network.cidr) discoveredPrintersIPs.push(...discoveredPrintersIPsForNetwork) - } catch (error) { - console.log(error) + } catch (error: any) { + log.error(new Date().toLocaleString(), error) } const printers = await prisma.printer.findMany() diff --git a/src/services/PrinterStatusService.ts b/src/services/PrinterStatusService.ts index 5ff8395..fd4be7f 100644 --- a/src/services/PrinterStatusService.ts +++ b/src/services/PrinterStatusService.ts @@ -5,6 +5,7 @@ import { objectIdsRepository, PrinterObjectIds } from '../repositories/ObjectIDRepository.js' +import log from '../log.js' type VarbindString = { oid: string @@ -63,7 +64,8 @@ export class PrinterStatusService { data: { timestamp: new Date() } }) } else { - console.log( + log.info( + new Date().toLocaleString(), `Updating printer status ${this.printer.serialNumber} (${this.printer.ip}). Counter:${lastStatus?.counter} to ${printerStatus.counter}` ) @@ -90,7 +92,8 @@ export class PrinterStatusService { } }) .catch(err => { - console.log( + log.error( + new Date().toLocaleString(), `Couldn't get printer status for ${printer.serialNumber} (IP:${printer.ip}). Error: ${err}` ) })