From 233ffc79ea39e07cf1d4eac577b21ce2a860216f Mon Sep 17 00:00:00 2001 From: Andrzej Stepien Date: Fri, 11 Aug 2023 14:40:19 +0200 Subject: [PATCH] installed pino, added traces --- package-lock.json | 218 +++++++++++++++++++++++++++ package.json | 1 + src/createNote.mjs | 3 + src/db.mjs | 3 + src/getNewPrompt.mjs | 5 +- src/insertPublished.mjs | 3 + src/logger.mjs | 13 ++ src/makeText.mjs | 4 + src/spam.mjs | 3 +- src/todaysPromptAlreadyPublished.mjs | 7 +- 10 files changed, 255 insertions(+), 5 deletions(-) create mode 100644 src/logger.mjs diff --git a/package-lock.json b/package-lock.json index f7d60c1..e196a5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "body-parser": "^1.20.2", "express": "^4.18.2", + "pino": "^8.15.0", "promised-sqlite3": "^2.1.0", "undici": "^5.23.0" }, @@ -83,6 +84,17 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "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", @@ -213,11 +225,38 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "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/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -261,6 +300,29 @@ "concat-map": "0.0.1" } }, + "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/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -514,6 +576,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", @@ -603,6 +681,14 @@ "node": ">= 0.8" } }, + "node_modules/fast-redact": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -880,6 +966,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/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1429,6 +1534,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -1496,6 +1606,69 @@ "integrity": "sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==", "dev": true }, + "node_modules/pino": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.15.0.tgz", + "integrity": "sha512-olUADJByk4twxccmAxb1RiGKOSvddHugCV3wkqjyv+3Sooa2KLrmXrKEWOKi0XPCLasRR5jBXxioE1jxUa4KzQ==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/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/pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + }, + "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/process-warning": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==" + }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -1549,6 +1722,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -1595,6 +1773,14 @@ "node": ">= 6" } }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -1675,6 +1861,14 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -1825,6 +2019,14 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "optional": true }, + "node_modules/sonic-boom": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/spellchecker": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/spellchecker/-/spellchecker-3.7.1.tgz", @@ -1836,6 +2038,14 @@ "nan": "^2.14.0" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sqlite3": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", @@ -1963,6 +2173,14 @@ "node": ">=8.0.0" } }, + "node_modules/thread-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.0.tgz", + "integrity": "sha512-xZYtOtmnA63zj04Q+F9bdEay5r47bvpo1CaNqsKi7TpoJHcotUez8Fkfo2RJWpW91lnnaApdpRbVwCWsy+ifcw==", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", diff --git a/package.json b/package.json index 5ce668c..9129cf5 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "dependencies": { "body-parser": "^1.20.2", "express": "^4.18.2", + "pino": "^8.15.0", "promised-sqlite3": "^2.1.0", "undici": "^5.23.0" } diff --git a/src/createNote.mjs b/src/createNote.mjs index e4ac08b..59babb5 100644 --- a/src/createNote.mjs +++ b/src/createNote.mjs @@ -1,4 +1,5 @@ import { apiKey } from './API.mjs' +import logger from './logger.mjs' //JUST FOR USE IN LOCAL ENVIRONMENT import { Agent, setGlobalDispatcher } from 'undici' const agent = new Agent({ @@ -11,6 +12,8 @@ setGlobalDispatcher(agent) export default async function createNote(text) { + const childLogger = logger.child({text}) + childLogger.trace("createNote called") const url = 'http://localhost:3000/api/notes/create' const params = { text: text, diff --git a/src/db.mjs b/src/db.mjs index 7af0c84..a27b87e 100644 --- a/src/db.mjs +++ b/src/db.mjs @@ -1,4 +1,5 @@ import Knex from 'knex' +import logger from './logger.mjs' export const db = Knex({ client: 'sqlite3', // or 'better-sqlite3' @@ -9,6 +10,8 @@ export const db = Knex({ }) export const getWords = async (db) => { + const childLogger = logger.child({db}) + childLogger.trace("getWords called") return db .select("word") .from("dictionary") diff --git a/src/getNewPrompt.mjs b/src/getNewPrompt.mjs index d067fcf..f87801d 100644 --- a/src/getNewPrompt.mjs +++ b/src/getNewPrompt.mjs @@ -1,4 +1,5 @@ import { db } from "./db.mjs" +import logger from "./logger.mjs" const blocklist = db.union([ db('bad_words').select('word'), @@ -8,8 +9,8 @@ const blocklist = db.union([ export default async function getNewPrompt({ minCount = 200000, maxCount = 30000000, rarityBias = 0.5 }) { - - + const childLogger = logger.child({minCount,maxCount,rarityBias}) + childLogger.trace("getNewPrompt called") const prompts = await db('dictionary') .select('*') .where({ diff --git a/src/insertPublished.mjs b/src/insertPublished.mjs index 52f4c34..b5aed33 100644 --- a/src/insertPublished.mjs +++ b/src/insertPublished.mjs @@ -1,5 +1,6 @@ import { db } from "./db.mjs" import { isoDate } from "./utilities.mjs" +import logger from "./logger.mjs" const sampleRes = { createdNote: { id: '9i8urek4jtzhmtuh', @@ -45,6 +46,8 @@ const sampleRes = { } export default async function insertPublished(res, word){ + const childLogger = logger.child({res,word}) + childLogger.trace("insertPublished called") return db('published') .insert({ id: res.createdNote.id, diff --git a/src/logger.mjs b/src/logger.mjs new file mode 100644 index 0000000..747018e --- /dev/null +++ b/src/logger.mjs @@ -0,0 +1,13 @@ +import pino from 'pino' + + + +export default pino({ + level: process.env.PINO_LOG_LEVEL || 'info', + formatters: { + level: (label) => { + return { severity: label.toUpperCase() }; + }, + }, + timestamp: pino.stdTimeFunctions.isoTime, +}) \ No newline at end of file diff --git a/src/makeText.mjs b/src/makeText.mjs index c5d1d03..479fa67 100644 --- a/src/makeText.mjs +++ b/src/makeText.mjs @@ -1,4 +1,6 @@ +import logger from "./logger.mjs" + const sampleData = { word: 'malt', count: 1520084, @@ -9,6 +11,8 @@ const sampleData = { } export default function makeText(prompt){ + const childLogger = logger.child({prompt}) + childLogger.trace("makeText called") const meanings = JSON.parse(prompt.meanings) const word = prompt.word const pronunciation = prompt.pronunciation diff --git a/src/spam.mjs b/src/spam.mjs index 42f2dcf..c9ab0fa 100644 --- a/src/spam.mjs +++ b/src/spam.mjs @@ -1,4 +1,5 @@ import daily from "./daily.mjs" +import logger from "./logger.mjs" const maxCount = 30000000 const minCount = 200000 @@ -14,5 +15,5 @@ const delay = ms => new Promise(res=>{setTimeout(res,ms)}) do{ await delay(1000) await spam() -console.log("SPAM!") +logger.info("Spam!") }while(true) \ No newline at end of file diff --git a/src/todaysPromptAlreadyPublished.mjs b/src/todaysPromptAlreadyPublished.mjs index 2cb0eb6..4f7437f 100644 --- a/src/todaysPromptAlreadyPublished.mjs +++ b/src/todaysPromptAlreadyPublished.mjs @@ -1,9 +1,12 @@ import { db } from "./db.mjs"; import { isoDate } from "./utilities.mjs"; +import logger from "./logger.mjs"; export default async function todaysPromptAlreadyPublished() { + const childLogger = logger.child() + childLogger.trace("todaysPromptAlreadyPublished called") const number = await db('published') - .count('* as count') - .where('date', isoDate()) + .count('* as count') + .where('date', isoDate()) return number[0].count > 0 }