From 6c196935a16d46876ca343957924c6725c3764e5 Mon Sep 17 00:00:00 2001 From: maxime Date: Sun, 17 Mar 2024 10:36:48 +0100 Subject: [PATCH] fix: fixed logger --- package-lock.json | 132 +++++++++++++++++- package.json | 1 + .../src/functions/refreshMetadata/handler.ts | 4 +- .../handler.ts | 2 +- .../refreshMetadataLongProcess/handler.ts | 2 +- .../books/retrieveMetadataAndSaveCover.ts | 12 +- .../books/saveCoverFromArchiveToBucket.ts | 6 +- .../saveCoverFromExternalLinkToBucket.ts | 6 +- .../src/libs/collections/refreshMetadata.ts | 6 +- .../api/src/libs/google/googleBooksApi.ts | 6 +- packages/api/src/libs/logger.ts | 35 +---- .../metadata/google/getGoogleBookMetadata.ts | 6 +- packages/api/src/libs/supabase/lock.ts | 10 +- .../src/libs/sync/books/createOrUpdateBook.ts | 18 +-- .../synchronizeBookWithParentCollections.ts | 8 +- .../src/libs/sync/books/updateTagsForBook.ts | 4 +- .../collections/registerOrUpdateCollection.ts | 10 +- .../libs/sync/synchronizeFromDataSource.ts | 12 +- 18 files changed, 187 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index d0ae8a18..1133bbc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "@emotion/cache": "^11.11.0", "@mui/material-nextjs": "^5.15.11", "arg": "^5.0.2", + "pino": "^8.19.0", "react-markdown": "^9.0.1", "reactjrx": "^1.79.1", "remark-gfm": "^4.0.0", @@ -7869,11 +7870,11 @@ } }, "node_modules/@middy/validator": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@middy/validator/-/validator-5.3.0.tgz", - "integrity": "sha512-Uc9Ad5D1rywkgPVXIzyoP/dm6gshUe5Vl4HLCLdU0pv/5TYyJOuDHXG5MgAxFBmzAVLxFDv6Xv7HoIcbfqt8sA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@middy/validator/-/validator-5.3.2.tgz", + "integrity": "sha512-fI1s7gFoYP8144b41VZOE0cJQjMpoNGydSHPoNMeTbvNedM8uHhxeIJR8fVi9LPweGzh3GdzGMGttglHuZsy5w==", "dependencies": { - "@middy/util": "5.3.0", + "@middy/util": "5.3.2", "ajv": "8.12.0", "ajv-errors": "3.0.0", "ajv-formats": "2.1.1", @@ -7890,6 +7891,18 @@ "url": "https://github.com/sponsors/willfarrell" } }, + "node_modules/@middy/validator/node_modules/@middy/util": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@middy/util/-/util-5.3.2.tgz", + "integrity": "sha512-/Y5xxPwkQAigphYmJhThN6TGQCCFgybOYYK7SfiEr8cY7IhYnTys2uyTJR7ziS5jP82zNlgE9H5ZEj6IswHOKQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/willfarrell" + } + }, "node_modules/@mui/base": { "version": "5.0.0-beta.39", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.39.tgz", @@ -15046,6 +15059,14 @@ "node": ">= 4.5.0" } }, + "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/attr-accept": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", @@ -22452,6 +22473,14 @@ "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" }, + "node_modules/fast-redact": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.4.0.tgz", + "integrity": "sha512-2gwPvyna0zwBdxKnng1suu/dTL5s8XEy2ZqH8mwDUwJdDkV8w5kp+JV26mupdK68HmPMbm6yjW9m7/Ys/BHEHg==", + "engines": { + "node": ">=6" + } + }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", @@ -35462,6 +35491,14 @@ "resolved": "https://registry.npmjs.org/observable-fns/-/observable-fns-0.6.1.tgz", "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==" }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -36537,6 +36574,49 @@ "node": ">=0.10.0" } }, + "node_modules/pino": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.19.0.tgz", + "integrity": "sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.1.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", + "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/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/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/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -37861,6 +37941,11 @@ "node": ">=10.0" } }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -38142,6 +38227,11 @@ } ] }, + "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/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -39008,6 +39098,14 @@ "node": ">=8.10.0" } }, + "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/recast": { "version": "0.11.23", "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", @@ -40780,6 +40878,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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", @@ -43721,6 +43827,14 @@ "node": ">= 14" } }, + "node_modules/sonic-boom": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.0.tgz", + "integrity": "sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -45250,6 +45364,14 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thread-stream": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/threads": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/threads/-/threads-1.7.0.tgz", @@ -49955,7 +50077,7 @@ }, "packages/web": { "name": "@oboku/web", - "version": "0.26.0", + "version": "0.27.0", "dependencies": { "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", diff --git a/package.json b/package.json index 6693400a..a3443004 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "@emotion/cache": "^11.11.0", "@mui/material-nextjs": "^5.15.11", "arg": "^5.0.2", + "pino": "^8.19.0", "react-markdown": "^9.0.1", "reactjrx": "^1.79.1", "remark-gfm": "^4.0.0", diff --git a/packages/api/src/functions/refreshMetadata/handler.ts b/packages/api/src/functions/refreshMetadata/handler.ts index 8855e54f..2779485f 100644 --- a/packages/api/src/functions/refreshMetadata/handler.ts +++ b/packages/api/src/functions/refreshMetadata/handler.ts @@ -39,4 +39,6 @@ const lambda: ValidatedEventAPIGatewayProxyEvent = async ( } } -export const main = withMiddy(lambda) +export const main = withMiddy(lambda, { + schema +}) diff --git a/packages/api/src/functions/refreshMetadataCollectionLongProcess/handler.ts b/packages/api/src/functions/refreshMetadataCollectionLongProcess/handler.ts index ec357661..4a3763d7 100644 --- a/packages/api/src/functions/refreshMetadataCollectionLongProcess/handler.ts +++ b/packages/api/src/functions/refreshMetadataCollectionLongProcess/handler.ts @@ -73,7 +73,7 @@ const lambda: ValidatedEventAPIGatewayProxyEvent = async ( await deleteLock(supabase, lockId) - Logger.log(`lambda executed with success for ${collection._id}`) + Logger.info(`lambda executed with success for ${collection._id}`) return { statusCode: 200, diff --git a/packages/api/src/functions/refreshMetadataLongProcess/handler.ts b/packages/api/src/functions/refreshMetadataLongProcess/handler.ts index 23fc4d10..e091d424 100644 --- a/packages/api/src/functions/refreshMetadataLongProcess/handler.ts +++ b/packages/api/src/functions/refreshMetadataLongProcess/handler.ts @@ -114,7 +114,7 @@ const lambda: ValidatedEventAPIGatewayProxyEvent = async ( deleteLock(supabase, lockId) ]) - Logger.log(`lambda executed with success for ${book._id}`) + Logger.info(`lambda executed with success for ${book._id}`) return { statusCode: 200, diff --git a/packages/api/src/libs/books/retrieveMetadataAndSaveCover.ts b/packages/api/src/libs/books/retrieveMetadataAndSaveCover.ts index 40cb46d8..94637687 100644 --- a/packages/api/src/libs/books/retrieveMetadataAndSaveCover.ts +++ b/packages/api/src/libs/books/retrieveMetadataAndSaveCover.ts @@ -23,7 +23,7 @@ import { isBookProtected } from "@libs/couch/isBookProtected" import nano from "nano" import { atomicUpdate } from "@libs/couch/dbHelpers" -const logger = Logger.namespace("retrieveMetadataAndSaveCover") +const logger = Logger.child({module: "retrieveMetadataAndSaveCover"}) export type RetrieveMetadataAndSaveCoverContext = { userName: string @@ -39,7 +39,7 @@ export const retrieveMetadataAndSaveCover = async ( db: nano.DocumentScope } ) => { - logger.log( + logger.info( `syncMetadata run for user ${ctx.userName} with book ${ctx.book._id}` ) let bookNameForDebug = "" @@ -49,7 +49,7 @@ export const retrieveMetadataAndSaveCover = async ( try { bookNameForDebug = reduceMetadata(ctx.book.metadata).title || "" - logger.log( + logger.info( `syncMetadata processing ${ctx.book._id} with resource id ${ctx.link.resourceId}` ) @@ -189,8 +189,8 @@ export const retrieveMetadataAndSaveCover = async ( ) .sort()[0] - Logger.log(`coverRelativePath`, coverRelativePath) - Logger.log(`opfBasePath`, opfBasePath) + logger.info(`coverRelativePath`, coverRelativePath) + logger.info(`opfBasePath`, opfBasePath) metadataList.push({ type: "file", @@ -210,7 +210,7 @@ export const retrieveMetadataAndSaveCover = async ( console.log(`No cover path found for ${tmpFilePath}`) } } else { - logger.log( + logger.info( `${contentType} cannot be extracted to retrieve information (cover, etc)` ) } diff --git a/packages/api/src/libs/books/saveCoverFromArchiveToBucket.ts b/packages/api/src/libs/books/saveCoverFromArchiveToBucket.ts index 6bb2f027..14e17f13 100644 --- a/packages/api/src/libs/books/saveCoverFromArchiveToBucket.ts +++ b/packages/api/src/libs/books/saveCoverFromArchiveToBucket.ts @@ -5,7 +5,7 @@ import { Logger } from "@libs/logger" import { saveCoverFromBufferToBucket } from "./saveCoverFromBufferToBucket" import { asError } from "@libs/utils" -const logger = Logger.namespace("saveCoverFromArchiveToBucket") +const logger = Logger.child({ module: "saveCoverFromArchiveToBucket" }) type Context = { userNameHex: string @@ -27,7 +27,7 @@ export const saveCoverFromArchiveToBucket = async ( folderBasePath === `` ? coverPath : `${folderBasePath}/${coverPath}` const objectKey = `cover-${ctx.userNameHex}-${book._id}` - logger.log(`prepare to save cover ${objectKey}`) + Logger.info(`prepare to save cover ${objectKey}`) const zip = fs .createReadStream(epubFilepath) @@ -40,7 +40,7 @@ export const saveCoverFromArchiveToBucket = async ( await saveCoverFromBufferToBucket(entryAsBuffer, objectKey) - logger.log(`cover ${objectKey} has been saved/updated`) + Logger.info(`cover ${objectKey} has been saved/updated`) } else { entry.autodrain() } diff --git a/packages/api/src/libs/books/saveCoverFromExternalLinkToBucket.ts b/packages/api/src/libs/books/saveCoverFromExternalLinkToBucket.ts index 7fecfd52..6a5f1b0b 100644 --- a/packages/api/src/libs/books/saveCoverFromExternalLinkToBucket.ts +++ b/packages/api/src/libs/books/saveCoverFromExternalLinkToBucket.ts @@ -3,7 +3,7 @@ import { Logger } from "@libs/logger" import axios from "axios" import { saveCoverFromBufferToBucket } from "./saveCoverFromBufferToBucket" -const logger = Logger.namespace("saveCoverFromExternalLinkToBucket") +const logger = Logger.child({module: "saveCoverFromExternalLinkToBucket"}) type Context = { userNameHex: string @@ -16,7 +16,7 @@ export const saveCoverFromExternalLinkToBucket = async ( ) => { const objectKey = `cover-${ctx.userNameHex}-${book._id}` - logger.log(`prepare to save cover ${objectKey}`) + Logger.info(`prepare to save cover ${objectKey}`) try { // @todo request is deprecated, switch to something else @@ -28,7 +28,7 @@ export const saveCoverFromExternalLinkToBucket = async ( await saveCoverFromBufferToBucket(entryAsBuffer, objectKey) - Logger.log(`cover ${objectKey} has been saved/updated`) + Logger.info(`cover ${objectKey} has been saved/updated`) } catch (e) { logger.error(e) } diff --git a/packages/api/src/libs/collections/refreshMetadata.ts b/packages/api/src/libs/collections/refreshMetadata.ts index 8e7b6d6c..90d7beb7 100644 --- a/packages/api/src/libs/collections/refreshMetadata.ts +++ b/packages/api/src/libs/collections/refreshMetadata.ts @@ -24,7 +24,7 @@ export const refreshMetadata = async ( } ) => { if (collection.type !== "series") { - Logger.log(`Ignoring ${collection._id} because of type ${collection.type}`) + Logger.info(`Ignoring ${collection._id} because of type ${collection.type}`) return } @@ -74,7 +74,7 @@ export const refreshMetadata = async ( */ if (soft && isCollectionAlreadyUpdatedFromLink) { - Logger.log(`${collection._id} already has metadata, ignoring it!`) + Logger.info(`${collection._id} already has metadata, ignoring it!`) return { statusCode: 200, @@ -83,7 +83,7 @@ export const refreshMetadata = async ( } if (soft && !metadataLink && collection.lastMetadataUpdatedAt) { - Logger.log( + Logger.info( `${collection._id} does not have link and is already refreshed, ignoring it!` ) diff --git a/packages/api/src/libs/google/googleBooksApi.ts b/packages/api/src/libs/google/googleBooksApi.ts index 2578b178..7d8c3d4f 100644 --- a/packages/api/src/libs/google/googleBooksApi.ts +++ b/packages/api/src/libs/google/googleBooksApi.ts @@ -25,7 +25,7 @@ export const findByISBN = async (isbn: string, apiKey: string) => { }) if (response.status === 200) { - // Logger.log(`google findByISBN response`, response.data) + // Logger.info(`google findByISBN response`, response.data) return response.data } @@ -46,7 +46,7 @@ export const findByTitle = async (name: string, apiKey: string) => { }) if (response.status === 200) { - // Logger.log(`google findByName response`, response.data) + // Logger.info(`google findByName response`, response.data) return response.data } @@ -67,7 +67,7 @@ export const findSeriesByTitle = async (name: string, apiKey: string) => { }) if (response.status === 200) { - // Logger.log(`google findByName response`, response.data) + // Logger.info(`google findByName response`, response.data) return response.data } diff --git a/packages/api/src/libs/logger.ts b/packages/api/src/libs/logger.ts index 561ad126..cc711673 100644 --- a/packages/api/src/libs/logger.ts +++ b/packages/api/src/libs/logger.ts @@ -1,34 +1,3 @@ -import util from "util" +import pino from "pino" -export const UtilLogger = { - log: (message?: any, ...optionalParams: any[]) => { - console.log( - "oboku:log", - JSON.stringify(message || ""), - ...optionalParams.map((v) => JSON.stringify(v)) - ) - }, - error: (a: any, b?: any, c?: any) => { - console.error( - typeof a !== "string" ? util.inspect(a) : a, - typeof b !== "string" ? util.inspect(b) : b, - util.inspect(c) - ) - } -} - -const _logger: { - log: (typeof console)["log"] - error: (typeof console)["error"] -} = UtilLogger - -export const Logger = { - namespace: (name: string) => ({ - log: (message?: any, ...optionalParams: any[]) => - _logger.log(name, message, ...optionalParams), - error: (...optionalParams: any[]) => _logger.error(...optionalParams) - }), - log: (message?: any, ...optionalParams: any[]) => - _logger.log(message, ...optionalParams), - error: (e: any) => _logger.error(e) -} +export const Logger = pino({ level: "silent" }) diff --git a/packages/api/src/libs/metadata/google/getGoogleBookMetadata.ts b/packages/api/src/libs/metadata/google/getGoogleBookMetadata.ts index 25ef8caa..4c72e43e 100644 --- a/packages/api/src/libs/metadata/google/getGoogleBookMetadata.ts +++ b/packages/api/src/libs/metadata/google/getGoogleBookMetadata.ts @@ -15,7 +15,7 @@ export const getGoogleBookMetadata = async ( if (!response.items?.length) { let titleRefined = refineTitle(metadata.title ?? "", 1) - Logger.log( + Logger.info( `getGoogleMetadata was unable to find result for isbn:${metadata.isbn} or title:${metadata.title}. Trying to refine title with 1 deepness ${titleRefined}` ) @@ -24,7 +24,7 @@ export const getGoogleBookMetadata = async ( if (!response.items?.length) { titleRefined = refineTitle(metadata.title ?? "", 2) - Logger.log( + Logger.info( `getGoogleMetadata was unable to find result for ${titleRefined}. Trying to refine title with 2 deepness ${titleRefined}` ) @@ -34,7 +34,7 @@ export const getGoogleBookMetadata = async ( if (!response.items?.length) { titleRefined = refineTitle(metadata.title ?? "", 3) - Logger.log( + Logger.info( `getGoogleMetadata was unable to find result for ${titleRefined}. Trying to refine title with 2 deepness ${titleRefined}` ) diff --git a/packages/api/src/libs/supabase/lock.ts b/packages/api/src/libs/supabase/lock.ts index 162ef00b..3c7b4b16 100644 --- a/packages/api/src/libs/supabase/lock.ts +++ b/packages/api/src/libs/supabase/lock.ts @@ -16,7 +16,7 @@ export const lock = async ( const item = (response.data ?? [])[0] if (!item) { - Logger.log( + Logger.info( `${lockId} not found after receiving 409. Invalid state, ignoring invocation` ) @@ -27,7 +27,7 @@ export const lock = async ( const now = new Date() if (isLockOutdated(lock, maxDuration)) { - Logger.log(`${lockId} lock is assumed lost and will be recreated`) + Logger.info(`${lockId} lock is assumed lost and will be recreated`) const updatedResponse = await supabase .from("lock") @@ -35,19 +35,19 @@ export const lock = async ( .select() if (updatedResponse.status === 200) { - Logger.log(`${lockId} lock correctly updated, command will be sent`) + Logger.info(`${lockId} lock correctly updated, command will be sent`) return { alreadyLocked: false } } } else { - Logger.log(`${lockId} invocation is ignored`) + Logger.info(`${lockId} invocation is ignored`) return { alreadyLocked: true } } } if (response.status === 201) { - Logger.log( + Logger.info( `New lock created for ${lockId} with id ${(response.data ?? [])[0].id}. Command will be sent` ) diff --git a/packages/api/src/libs/sync/books/createOrUpdateBook.ts b/packages/api/src/libs/sync/books/createOrUpdateBook.ts index 4f1b81eb..c63b9a12 100644 --- a/packages/api/src/libs/sync/books/createOrUpdateBook.ts +++ b/packages/api/src/libs/sync/books/createOrUpdateBook.ts @@ -18,7 +18,7 @@ type Context = Parameters>[0] & { } type SynchronizeAbleItem = SynchronizeAbleDataSource["items"][number] -const logger = Logger.namespace("sync.books") +const logger = Logger.child({module: "sync.books"}) function isFolder( item: SynchronizeAbleDataSource | SynchronizeAbleItem @@ -38,7 +38,7 @@ export const createOrUpdateBook = async ({ helpers: Helpers }) => { try { - logger.log(`createOrUpdateBook "${item.name}":`, item.resourceId) + Logger.info(`createOrUpdateBook "${item.name}":`, item.resourceId) const parentTagNames = parents.reduce( (tags: string[], parent) => [ @@ -62,7 +62,7 @@ export const createOrUpdateBook = async ({ * We update it */ if (!linkForResourceId.dataSourceId) { - logger.log( + Logger.info( `${item.name} has a link not yet attached to any dataSource, updating it with current dataSource ${dataSourceId}` ) @@ -96,7 +96,7 @@ export const createOrUpdateBook = async ({ return } - logger.log( + Logger.info( `${item.name} has a link attached to a non existing dataSource, updating it with current dataSource ${dataSourceId}` ) @@ -117,7 +117,7 @@ export const createOrUpdateBook = async ({ if (existingBook) { if (!existingBook.isAttachedToDataSource) { - logger.log( + Logger.info( `createOrUpdateBook "${item.name}": isAttachedToDataSource is false and therefore will be migrated as true`, existingBook._id ) @@ -126,7 +126,7 @@ export const createOrUpdateBook = async ({ isAttachedToDataSource: true })) } - // logger.log(`createOrUpdateBook "${item.name}": existingBook`, existingBook._id) + // Logger.info(`createOrUpdateBook "${item.name}": existingBook`, existingBook._id) } } @@ -134,7 +134,7 @@ export const createOrUpdateBook = async ({ let bookId = existingBook?._id if (!bookId) { - logger.log( + Logger.info( `createOrUpdateBook "${item.name}": new file detected, creating book` ) const insertedBook = await helpers.createBook({ @@ -196,7 +196,7 @@ export const createOrUpdateBook = async ({ .refreshBookMetadata({ bookId: existingBook?._id }) .catch(logger.error) - logger.log( + Logger.info( `book ${ linkForResourceId.book } has changed in metadata, refresh triggered ${lastMetadataUpdatedAt} ${new Date( @@ -223,7 +223,7 @@ export const createOrUpdateBook = async ({ await helpers.addTagsToBook(existingBook._id, applyTags || []) } - logger.log(`createOrUpdateBook "${item.name}": DONE!`) + Logger.info(`createOrUpdateBook "${item.name}": DONE!`) } catch (e) { logger.error( `createOrUpdateBook something went wrong for book ${item.name} (${item.resourceId})` diff --git a/packages/api/src/libs/sync/books/synchronizeBookWithParentCollections.ts b/packages/api/src/libs/sync/books/synchronizeBookWithParentCollections.ts index 897a88f7..68796441 100644 --- a/packages/api/src/libs/sync/books/synchronizeBookWithParentCollections.ts +++ b/packages/api/src/libs/sync/books/synchronizeBookWithParentCollections.ts @@ -4,7 +4,7 @@ import { SynchronizeAbleDataSource } from "@libs/plugins/types" -const logger = Logger.namespace("sync") +const logger = Logger.child({ module: "sync" }) type Helpers = Parameters>[1] type SynchronizeAbleItem = SynchronizeAbleDataSource["items"][number] @@ -20,7 +20,7 @@ export const synchronizeBookWithParentCollections = async ( ) => { const parentResourceIds = parents?.map((parent) => parent.resourceId) || [] - logger.log( + logger.info( `synchronizeBookWithParentCollections`, `${bookId} with ${parentResourceIds.length} parentResourceIds ${parentResourceIds}` ) @@ -49,7 +49,7 @@ export const synchronizeBookWithParentCollections = async ( ) if (collectionsThatHaveNotThisBookAsReferenceYet.length > 0) { - logger.log( + logger.info( `synchronizeBookWithParentCollections ${collectionsThatHaveNotThisBookAsReferenceYet.length} collections does not have ${bookId} attached to them yet` ) await Promise.all( @@ -88,7 +88,7 @@ export const synchronizeBookWithParentCollections = async ( (collectionId) => !bookCollections.includes(collectionId) ) if (bookHasNotOneOfTheCollectionsYet) { - logger.log( + logger.info( `synchronizeBookWithParentCollections ${bookId} has some missing parent collections. It will be updated to include them` ) await helpers.atomicUpdate("book", bookId, (old) => ({ diff --git a/packages/api/src/libs/sync/books/updateTagsForBook.ts b/packages/api/src/libs/sync/books/updateTagsForBook.ts index f05e527d..75853bf4 100644 --- a/packages/api/src/libs/sync/books/updateTagsForBook.ts +++ b/packages/api/src/libs/sync/books/updateTagsForBook.ts @@ -1,7 +1,7 @@ import { Logger } from "@libs/logger" import { DataSourcePlugin } from "@libs/plugins/types" -const logger = Logger.namespace("sync") +const logger = Logger.child({module: "sync"}) type Helpers = Parameters>[1] @@ -32,7 +32,7 @@ export const updateTagsForBook = async ( ) if (someNewTagsDoesNotExistYet) { await helpers.addTagsToBook(bookId, tagIds) - logger.log(`book ${bookId} has new tags detected and has been updated`) + Logger.info(`book ${bookId} has new tags detected and has been updated`) } } catch (e) { logger.error(`updateTagsForBook something went wrong for book ${bookId}`) diff --git a/packages/api/src/libs/sync/collections/registerOrUpdateCollection.ts b/packages/api/src/libs/sync/collections/registerOrUpdateCollection.ts index fb7f274d..88777820 100644 --- a/packages/api/src/libs/sync/collections/registerOrUpdateCollection.ts +++ b/packages/api/src/libs/sync/collections/registerOrUpdateCollection.ts @@ -12,7 +12,7 @@ type Helpers = Parameters>[1] type Context = Parameters>[0] type SynchronizeAbleItem = SynchronizeAbleDataSource["items"][number] -const logger = Logger.namespace("sync/registerOrUpdateCollection") +const logger = Logger.child({ module: "sync/registerOrUpdateCollection" }) export const registerOrUpdateCollection = async ({ item: { name, resourceId: linkResourceId, modifiedAt }, @@ -43,7 +43,7 @@ export const registerOrUpdateCollection = async ({ if (collectionFromResourceId) { collectionId = collectionFromResourceId._id - Logger.log( + Logger.info( `Found an existing collection for ${name}. Created at ${collectionFromResourceId.createdAt} and last synced at ${collectionFromResourceId.syncAt}` ) @@ -52,7 +52,7 @@ export const registerOrUpdateCollection = async ({ : undefined if (!lastSyncAt || lastSyncAt.getTime() < itemModifiedAt.getTime()) { - Logger.log( + Logger.info( `${name} modified date ${itemModifiedAt.toISOString()} is older than last synced date or not synced yet` ) @@ -76,7 +76,7 @@ export const registerOrUpdateCollection = async ({ ) } } else { - logger.log( + Logger.info( `registerOrUpdateCollection ${name} does not exist yet and will be created` ) @@ -124,7 +124,7 @@ export const registerOrUpdateCollection = async ({ const toRemove = difference(collection.books, booksInCollectionAsIds) if (toRemove.length > 0) { - logger.log( + Logger.info( `[ANOMALY] registerOrUpdateCollection ${name} contains books that does not exist anymore and they will be removed from it` ) diff --git a/packages/api/src/libs/sync/synchronizeFromDataSource.ts b/packages/api/src/libs/sync/synchronizeFromDataSource.ts index 8c6e04c5..786c95d2 100644 --- a/packages/api/src/libs/sync/synchronizeFromDataSource.ts +++ b/packages/api/src/libs/sync/synchronizeFromDataSource.ts @@ -11,7 +11,7 @@ import { createTagFromName } from "@libs/couch/dbHelpers" import nano from "nano" import { createOrUpdateBook } from "./books/createOrUpdateBook" -const logger = Logger.namespace("sync") +const logger = Logger.child({ module: "sync" }) type Helpers = Parameters>[1] type Context = Parameters>[0] & { @@ -101,7 +101,7 @@ const syncTags = async ({ tagNames.map(async (tag) => { const { created, id } = await createTagFromName(ctx.db, tag, true) if (created) { - logger.log(`syncTags ${tag} created with id ${id}`) + logger.info(`syncTags ${tag} created with id ${id}`) } }) ) @@ -123,7 +123,7 @@ const syncFolder = async ({ parents: (SynchronizeAbleItem | SynchronizeAbleDataSource)[] }) => { const metadataForFolder = directives.extractDirectivesFromName(item.name) - logger.log(`syncFolder ${item.name}: metadata `, metadataForFolder) + logger.info(`syncFolder ${item.name}: metadata `, metadataForFolder) const isCollection = isFolder(item) && @@ -132,7 +132,7 @@ const syncFolder = async ({ !metadataForFolder.isNotACollection if (metadataForFolder.isIgnored) { - logger.log(`syncFolder ${item.name}: ignored!`) + logger.info(`syncFolder ${item.name}: ignored!`) return } @@ -148,7 +148,7 @@ const syncFolder = async ({ await registerOrUpdateCollection({ ctx, item, helpers }) } - logger.log( + logger.info( `syncFolder ${item.name}: with items ${item.items?.length || 0} items` ) @@ -174,5 +174,5 @@ const syncFolder = async ({ }) ) - logger.log(`syncFolder ${item.name} DONE!`) + logger.info(`syncFolder ${item.name} DONE!`) }