diff --git a/lerna.json b/lerna.json index 5ad64883d4..3273f7bce7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "npmClient": "yarn", "useWorkspaces": true, "packages": ["packages/*"], diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 1302568db5..e72abc9e9d 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.2", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.5.6-alpha.42", + "@budibase/types": "2.5.6-alpha.44", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/backend-core/src/environment.ts b/packages/backend-core/src/environment.ts index 0d413b8fa9..1bea1f3692 100644 --- a/packages/backend-core/src/environment.ts +++ b/packages/backend-core/src/environment.ts @@ -154,6 +154,7 @@ const environment = { ? process.env.ENABLE_SSO_MAINTENANCE_MODE : false, VERSION: findVersion(), + DISABLE_PINO_LOGGER: process.env.DISABLE_PINO_LOGGER, _set(key: any, value: any) { process.env[key] = value // @ts-ignore diff --git a/packages/backend-core/src/logging/index.ts b/packages/backend-core/src/logging/index.ts index b229f47dea..b87062c478 100644 --- a/packages/backend-core/src/logging/index.ts +++ b/packages/backend-core/src/logging/index.ts @@ -1,5 +1,5 @@ export * as correlation from "./correlation/correlation" -export { logger, disableLogger } from "./pino/logger" +export { logger } from "./pino/logger" export * from "./alerts" // turn off or on context logging i.e. tenantId, appId etc diff --git a/packages/backend-core/src/logging/pino/logger.ts b/packages/backend-core/src/logging/pino/logger.ts index dd4b505d30..276377eb00 100644 --- a/packages/backend-core/src/logging/pino/logger.ts +++ b/packages/backend-core/src/logging/pino/logger.ts @@ -5,184 +5,169 @@ import * as correlation from "../correlation" import { IdentityType } from "@budibase/types" import { LOG_CONTEXT } from "../index" -// CORE LOGGERS - for disabling - -const BUILT_INS = { - log: console.log, - error: console.error, - info: console.info, - warn: console.warn, - trace: console.trace, - debug: console.debug, -} - // LOGGER -const pinoOptions: LoggerOptions = { - level: env.LOG_LEVEL, - formatters: { - level: label => { - return { level: label.toUpperCase() } - }, - bindings: () => { - return {} - }, - }, - timestamp: () => `,"timestamp":"${new Date(Date.now()).toISOString()}"`, -} - -if (env.isDev()) { - pinoOptions.transport = { - target: "pino-pretty", - options: { - singleLine: true, +let pinoInstance: pino.Logger | undefined +if (!env.DISABLE_PINO_LOGGER) { + const pinoOptions: LoggerOptions = { + level: env.LOG_LEVEL, + formatters: { + level: label => { + return { level: label.toUpperCase() } + }, + bindings: () => { + return {} + }, }, + timestamp: () => `,"timestamp":"${new Date(Date.now()).toISOString()}"`, } -} -export const logger = pino(pinoOptions) - -export function disableLogger() { - console.log = BUILT_INS.log - console.error = BUILT_INS.error - console.info = BUILT_INS.info - console.warn = BUILT_INS.warn - console.trace = BUILT_INS.trace - console.debug = BUILT_INS.debug -} - -// CONSOLE OVERRIDES - -interface MergingObject { - objects?: any[] - tenantId?: string - appId?: string - identityId?: string - identityType?: IdentityType - correlationId?: string - err?: Error -} - -function isPlainObject(obj: any) { - return typeof obj === "object" && obj !== null && !(obj instanceof Error) -} - -function isError(obj: any) { - return obj instanceof Error -} - -function isMessage(obj: any) { - return typeof obj === "string" -} - -/** - * Backwards compatibility between console logging statements - * and pino logging requirements. - */ -function getLogParams(args: any[]): [MergingObject, string] { - let error = undefined - let objects: any[] = [] - let message = "" - - args.forEach(arg => { - if (isMessage(arg)) { - message = `${message} ${arg}`.trimStart() - } - if (isPlainObject(arg)) { - objects.push(arg) - } - if (isError(arg)) { - error = arg - } - }) - - const identity = getIdentity() - - let contextObject = {} - - if (LOG_CONTEXT) { - contextObject = { - tenantId: getTenantId(), - appId: getAppId(), - identityId: identity?._id, - identityType: identity?.type, - correlationId: correlation.getId(), + if (env.isDev()) { + pinoOptions.transport = { + target: "pino-pretty", + options: { + singleLine: true, + }, } } - const mergingObject = { - objects: objects.length ? objects : undefined, - err: error, - ...contextObject, + pinoInstance = pino(pinoOptions) + + // CONSOLE OVERRIDES + + interface MergingObject { + objects?: any[] + tenantId?: string + appId?: string + identityId?: string + identityType?: IdentityType + correlationId?: string + err?: Error } - return [mergingObject, message] -} - -console.log = (...arg: any[]) => { - const [obj, msg] = getLogParams(arg) - logger.info(obj, msg) -} -console.info = (...arg: any[]) => { - const [obj, msg] = getLogParams(arg) - logger.info(obj, msg) -} -console.warn = (...arg: any[]) => { - const [obj, msg] = getLogParams(arg) - logger.warn(obj, msg) -} -console.error = (...arg: any[]) => { - const [obj, msg] = getLogParams(arg) - logger.error(obj, msg) -} - -/** - * custom trace impl - this resembles the node trace behaviour rather - * than traditional trace logging - * @param arg - */ -console.trace = (...arg: any[]) => { - const [obj, msg] = getLogParams(arg) - if (!obj.err) { - // to get stack trace - obj.err = new Error() + function isPlainObject(obj: any) { + return typeof obj === "object" && obj !== null && !(obj instanceof Error) } - logger.trace(obj, msg) -} -console.debug = (...arg: any) => { - const [obj, msg] = getLogParams(arg) - logger.debug(obj, msg) -} - -// CONTEXT - -const getTenantId = () => { - let tenantId - try { - tenantId = context.getTenantId() - } catch (e: any) { - // do nothing + function isError(obj: any) { + return obj instanceof Error + } + + function isMessage(obj: any) { + return typeof obj === "string" + } + + /** + * Backwards compatibility between console logging statements + * and pino logging requirements. + */ + function getLogParams(args: any[]): [MergingObject, string] { + let error = undefined + let objects: any[] = [] + let message = "" + + args.forEach(arg => { + if (isMessage(arg)) { + message = `${message} ${arg}`.trimStart() + } + if (isPlainObject(arg)) { + objects.push(arg) + } + if (isError(arg)) { + error = arg + } + }) + + const identity = getIdentity() + + let contextObject = {} + + if (LOG_CONTEXT) { + contextObject = { + tenantId: getTenantId(), + appId: getAppId(), + identityId: identity?._id, + identityType: identity?.type, + correlationId: correlation.getId(), + } + } + + const mergingObject = { + objects: objects.length ? objects : undefined, + err: error, + ...contextObject, + } + + return [mergingObject, message] + } + + console.log = (...arg: any[]) => { + const [obj, msg] = getLogParams(arg) + pinoInstance?.info(obj, msg) + } + console.info = (...arg: any[]) => { + const [obj, msg] = getLogParams(arg) + pinoInstance?.info(obj, msg) + } + console.warn = (...arg: any[]) => { + const [obj, msg] = getLogParams(arg) + pinoInstance?.warn(obj, msg) + } + console.error = (...arg: any[]) => { + const [obj, msg] = getLogParams(arg) + pinoInstance?.error(obj, msg) + } + + /** + * custom trace impl - this resembles the node trace behaviour rather + * than traditional trace logging + * @param arg + */ + console.trace = (...arg: any[]) => { + const [obj, msg] = getLogParams(arg) + if (!obj.err) { + // to get stack trace + obj.err = new Error() + } + pinoInstance?.trace(obj, msg) + } + + console.debug = (...arg: any) => { + const [obj, msg] = getLogParams(arg) + pinoInstance?.debug(obj, msg) + } + + // CONTEXT + + const getTenantId = () => { + let tenantId + try { + tenantId = context.getTenantId() + } catch (e: any) { + // do nothing + } + return tenantId + } + + const getAppId = () => { + let appId + try { + appId = context.getAppId() + } catch (e) { + // do nothing + } + return appId + } + + const getIdentity = () => { + let identity + try { + identity = context.getIdentity() + } catch (e) { + // do nothing + } + return identity } - return tenantId } -const getAppId = () => { - let appId - try { - appId = context.getAppId() - } catch (e) { - // do nothing - } - return appId -} - -const getIdentity = () => { - let identity - try { - identity = context.getIdentity() - } catch (e) { - // do nothing - } - return identity -} +export const logger = pinoInstance diff --git a/packages/bbui/package.json b/packages/bbui/package.json index ff82bbc2c4..68f0db5f73 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,8 +38,8 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/shared-core": "2.5.6-alpha.42", - "@budibase/string-templates": "2.5.6-alpha.42", + "@budibase/shared-core": "2.5.6-alpha.44", + "@budibase/string-templates": "2.5.6-alpha.44", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index 0015174bcf..e5434c14a2 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.5.6-alpha.42", - "@budibase/frontend-core": "2.5.6-alpha.42", - "@budibase/shared-core": "2.5.6-alpha.42", - "@budibase/string-templates": "2.5.6-alpha.42", + "@budibase/bbui": "2.5.6-alpha.44", + "@budibase/frontend-core": "2.5.6-alpha.44", + "@budibase/shared-core": "2.5.6-alpha.44", + "@budibase/string-templates": "2.5.6-alpha.44", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 87f8885baa..1424fd7021 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "dist/index.js", "bin": { @@ -29,14 +29,14 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.5.6-alpha.42", - "@budibase/string-templates": "2.5.6-alpha.42", - "@budibase/types": "2.5.6-alpha.42", + "@budibase/backend-core": "2.5.6-alpha.44", + "@budibase/string-templates": "2.5.6-alpha.44", + "@budibase/types": "2.5.6-alpha.44", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", "commander": "7.1.0", - "docker-compose": "0.23.12", + "docker-compose": "0.24.0", "dotenv": "16.0.1", "download": "8.0.0", "find-free-port": "^2.0.0", diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index cca2c91862..8082d3f0a0 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,6 +1,5 @@ #!/usr/bin/env node -import { logging } from "@budibase/backend-core" -logging.disableLogger() +process.env.DISABLE_PINO_LOGGER = "1" import "./prebuilds" import "./environment" import { env } from "@budibase/backend-core" diff --git a/packages/client/package.json b/packages/client/package.json index 7ff0ddae9c..19ba08c169 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,11 +19,11 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.5.6-alpha.42", - "@budibase/frontend-core": "2.5.6-alpha.42", - "@budibase/shared-core": "2.5.6-alpha.42", - "@budibase/string-templates": "2.5.6-alpha.42", - "@budibase/types": "2.5.6-alpha.42", + "@budibase/bbui": "2.5.6-alpha.44", + "@budibase/frontend-core": "2.5.6-alpha.44", + "@budibase/shared-core": "2.5.6-alpha.44", + "@budibase/string-templates": "2.5.6-alpha.44", + "@budibase/types": "2.5.6-alpha.44", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index c0b60cb091..414aac562e 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,13 +1,13 @@ { "name": "@budibase/frontend-core", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.5.6-alpha.42", - "@budibase/shared-core": "2.5.6-alpha.42", + "@budibase/bbui": "2.5.6-alpha.44", + "@budibase/shared-core": "2.5.6-alpha.44", "dayjs": "^1.11.7", "lodash": "^4.17.21", "socket.io-client": "^4.6.1", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 13cc20f9e9..618469354a 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index cc8a8208dc..34569a9727 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -45,12 +45,12 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.5.6-alpha.42", - "@budibase/client": "2.5.6-alpha.42", - "@budibase/pro": "2.5.6-alpha.42", - "@budibase/shared-core": "2.5.6-alpha.42", - "@budibase/string-templates": "2.5.6-alpha.42", - "@budibase/types": "2.5.6-alpha.42", + "@budibase/backend-core": "2.5.6-alpha.44", + "@budibase/client": "2.5.6-alpha.44", + "@budibase/pro": "2.5.6-alpha.44", + "@budibase/shared-core": "2.5.6-alpha.44", + "@budibase/string-templates": "2.5.6-alpha.44", + "@budibase/types": "2.5.6-alpha.44", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/shared-core/package.json b/packages/shared-core/package.json index 4ea3deea5f..b4fa8ac9e5 100644 --- a/packages/shared-core/package.json +++ b/packages/shared-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/shared-core", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Shared data utils", "main": "dist/cjs/src/index.js", "types": "dist/mjs/src/index.d.ts", @@ -20,7 +20,7 @@ "dev:builder": "yarn prebuild && concurrently \"tsc -p tsconfig.build.json --watch\" \"tsc -p tsconfig-cjs.build.json --watch\"" }, "dependencies": { - "@budibase/types": "2.5.6-alpha.42" + "@budibase/types": "2.5.6-alpha.44" }, "devDependencies": { "concurrently": "^7.6.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index e1397182dc..4db78ef952 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 3068068d4c..79a9b5d05c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Budibase types", "main": "dist/cjs/index.js", "types": "dist/mjs/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index ae9358f084..7e6a9c5495 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.5.6-alpha.42", + "version": "2.5.6-alpha.44", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -37,10 +37,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.5.6-alpha.42", - "@budibase/pro": "2.5.6-alpha.42", - "@budibase/string-templates": "2.5.6-alpha.42", - "@budibase/types": "2.5.6-alpha.42", + "@budibase/backend-core": "2.5.6-alpha.44", + "@budibase/pro": "2.5.6-alpha.44", + "@budibase/string-templates": "2.5.6-alpha.44", + "@budibase/types": "2.5.6-alpha.44", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", diff --git a/yarn.lock b/yarn.lock index 3b403d6444..815b155ff9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1486,15 +1486,15 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.5.6-alpha.41": - version "2.5.6-alpha.41" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.5.6-alpha.41.tgz#2632b398159211bf64bf6caff9753c877b6fc09d" - integrity sha512-8Zfm+RtcXY77gdXXHti8QT+Vt+1ApuVqYL3KCkxBVbpzgQci/F3mipNXUX8bEy/y+QYAdgn6psDTWAqyr9VALg== +"@budibase/pro@2.5.6-alpha.43": + version "2.5.6-alpha.43" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.5.6-alpha.43.tgz#3273219bcb51c0dde75753d59b22698722aad673" + integrity sha512-xUU7wFLsRczmPoystg5PN4GPtks0leMrdQJpCA3hxGM09szSHEheGKRCH3fpXhwbYe8GRsJx+27xrVxkW4+9yQ== dependencies: - "@budibase/backend-core" "2.5.6-alpha.41" + "@budibase/backend-core" "2.5.6-alpha.43" "@budibase/shared-core" "2.4.44-alpha.1" "@budibase/string-templates" "2.4.44-alpha.1" - "@budibase/types" "2.5.6-alpha.41" + "@budibase/types" "2.5.6-alpha.43" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -9545,13 +9545,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -docker-compose@0.23.12: - version "0.23.12" - resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.12.tgz#fa883b98be08f6926143d06bf9e522ef7ed3210c" - integrity sha512-KFbSMqQBuHjTGZGmYDOCO0L4SaML3BsWTId5oSUyaBa22vALuFHNv+UdDWs3HcMylHWKsxCbLB7hnM/nCosWZw== - dependencies: - yaml "^1.10.2" - docker-compose@0.23.17: version "0.23.17" resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" @@ -9559,6 +9552,13 @@ docker-compose@0.23.17: dependencies: yaml "^1.10.2" +docker-compose@0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.24.0.tgz#474cd38b05b3887a56ffb2c39f16a7ae4d7d5077" + integrity sha512-RN/oSPLPa6ZG5e4dHg8tD8EMpd1WJqomNMBQT+d2M5MwcmfrPW/xHTent4TVqX0zZvHemv7qhhNlzXjxCnFaQw== + dependencies: + yaml "^1.10.2" + docker-compose@^0.23.5: version "0.23.19" resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.19.tgz#9947726e2fe67bdfa9e8efe1ff15aa0de2e10eb8"