diff --git a/README.md b/README.md index 9f9cb36a5..63106a260 100644 --- a/README.md +++ b/README.md @@ -178,5 +178,5 @@ yarn plugin # this compiles plugin and copies it into existing DbGate installati After restarting DbGate, you could use your new plugin from DbGate. ## Logging -DbGate uses [pino logger](https://github.com/pinojs/pino). So by default, it produces JSON log messages into console and log files. If you want to see formatted logs, please use [pino-pretty](https://github.com/pinojs/pino-pretty) log formatter. +DbGate uses [pinomin logger](https://github.com/dbgate/pinomin). So by default, it produces JSON log messages into console and log files. If you want to see formatted logs, please use [pino-pretty](https://github.com/pinojs/pino-pretty) log formatter. diff --git a/packages/api/package.json b/packages/api/package.json index 49856089b..ea199c58f 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -49,6 +49,7 @@ "ncp": "^2.0.0", "node-cron": "^2.0.3", "on-finished": "^2.4.1", + "pinomin": "^1.0.1", "portfinder": "^1.0.28", "simple-encryptor": "^4.0.0", "ssh2": "^1.11.0", diff --git a/packages/api/src/index.js b/packages/api/src/index.js index 8cdcde23f..ae733370b 100644 --- a/packages/api/src/index.js +++ b/packages/api/src/index.js @@ -1,10 +1,10 @@ -const { setLogger, getLogger, setLoggerName, createPinoLikeLogger } = require('dbgate-tools'); +const { setLogger, getLogger, setLoggerName } = require('dbgate-tools'); const processArgs = require('./utility/processArgs'); const fs = require('fs'); const moment = require('moment'); const path = require('path'); const { logsdir, setLogsFilePath, getLogsFilePath } = require('./utility/directories'); -const platformInfo = require('./utility/platformInfo'); +const { createLogger } = require('pinomin'); if (processArgs.startProcess) { setLoggerName(processArgs.startProcess.replace(/Process$/, '')); @@ -30,7 +30,7 @@ function configureLogger() { setLogsFilePath(logsFilePath); setLoggerName('main'); - const logger = createPinoLikeLogger({ + const logger = createLogger({ base: { pid: process.pid }, targets: [ { diff --git a/packages/tools/package.json b/packages/tools/package.json index eeff6185b..c81c72dff 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -36,6 +36,7 @@ "debug": "^4.3.4", "json-stable-stringify": "^1.0.1", "lodash": "^4.17.21", + "pinomin": "^1.0.1", "uuid": "^3.4.0" } } diff --git a/packages/tools/src/getLogger.ts b/packages/tools/src/getLogger.ts index c834abcc4..8e4ef59c7 100644 --- a/packages/tools/src/getLogger.ts +++ b/packages/tools/src/getLogger.ts @@ -1,20 +1,20 @@ -import { createPinoLikeLogger, ILogger } from './pinomin'; +import pinomin, { Logger } from 'pinomin'; -let _logger: ILogger; +let _logger: Logger; let _name: string = null; -const defaultLogger: ILogger = createPinoLikeLogger({ +const defaultLogger: Logger = pinomin({ base: { pid: global?.process?.pid }, targets: [{ type: 'console', level: 'info' }], }); -export function setLogger(value: ILogger) { +export function setLogger(value: Logger) { _logger = value; } export function setLoggerName(value) { _name = value; } -export function getLogger(caller?: string): ILogger { +export function getLogger(caller?: string): Logger { let res = _logger || defaultLogger; if (caller) { const props = { caller }; diff --git a/packages/tools/src/index.ts b/packages/tools/src/index.ts index b35c9d7c0..b98ea267d 100644 --- a/packages/tools/src/index.ts +++ b/packages/tools/src/index.ts @@ -19,4 +19,3 @@ export * from './computeDiffRows'; export * from './preloadedRowsTools'; export * from './ScriptWriter'; export * from './getLogger'; -export * from './pinomin'; diff --git a/packages/tools/src/pinomin.ts b/packages/tools/src/pinomin.ts deleted file mode 100644 index aa4544a75..000000000 --- a/packages/tools/src/pinomin.ts +++ /dev/null @@ -1,138 +0,0 @@ -export interface ILogger { - trace(msg: string); - trace(data: {} | Error, msg: string); - - debug(msg: string); - debug(data: {} | Error, msg: string); - - info(msg: string); - info(data: {} | Error, msg: string); - - warn(msg: string); - warn(data: {} | Error, msg: string); - - error(msg: string); - error(data: {} | Error, msg: string); - - fatal(msg: string); - fatal(data: {} | Error, msg: string); - - child(childProps: {}): ILogger; - log(record: ILogRecord); -} - -export interface ILogRecord { - time: number; - level: number; - msg: string; - pid?: number; -} - -class PinoLikeLogger implements ILogger { - constructor(public config: ILogConfig) {} - - trace(msg: string); - trace(data: {} | Error, msg: string); - trace(data, msg?) { - this.log(this.packRecord(logLevelNumbers.trace, data, msg)); - } - debug(msg: string); - debug(data: {} | Error, msg: string); - debug(data, msg?) { - this.log(this.packRecord(logLevelNumbers.debug, data, msg)); - } - info(msg: string); - info(data: {} | Error, msg: string); - info(data, msg?) { - this.log(this.packRecord(logLevelNumbers.info, data, msg)); - } - warn(msg: string); - warn(data: {} | Error, msg: string); - warn(data, msg?) { - this.log(this.packRecord(logLevelNumbers.warn, data, msg)); - } - error(msg: string); - error(data: {} | Error, msg: string); - error(data, msg?) { - this.log(this.packRecord(logLevelNumbers.error, data, msg)); - } - fatal(msg: string); - fatal(data: {} | Error, msg: string); - fatal(data, msg?) { - this.log(this.packRecord(logLevelNumbers.fatal, data, msg)); - } - - packRecord(level: number, data, msg?): ILogRecord { - if (msg) { - return { - ...this.config.base, - ...data, - level, - msg, - time: new Date().getTime(), - }; - } - return { - ...this.config.base, - level, - msg: data, - time: new Date().getTime(), - }; - } - - log(record: ILogRecord) { - for (const target of this.config.targets) { - if (record.level < logLevelNames[target.level]) { - continue; - } - switch (target.type) { - case 'console': - console.log(JSON.stringify(record)); - break; - case 'stream': - target.stream.write(JSON.stringify(record) + '\n'); - break; - } - } - } - - child(childProps: {}): ILogger { - return new PinoLikeLogger({ - ...this.config, - base: { ...this.config.base, ...childProps }, - }); - } -} - -export const logLevelNames = { - 10: 'trace', - 20: 'debug', - 30: 'info', - 40: 'warn', - 50: 'error', - 60: 'fatal', -}; - -export const logLevelNumbers = { - trace: 10, - debug: 20, - info: 30, - warn: 40, - error: 50, - fatal: 60, -}; - -interface ILogTargetConfig { - level: keyof typeof logLevelNumbers; - type: 'console' | 'stream'; - stream?: any; -} - -interface ILogConfig { - base: {}; - targets: ILogTargetConfig[]; -} - -export function createPinoLikeLogger(config: ILogConfig): ILogger { - return new PinoLikeLogger(config); -} diff --git a/yarn.lock b/yarn.lock index 288bdb9b8..98949d997 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8737,6 +8737,11 @@ pino-pretty@^9.1.1: sonic-boom "^3.0.0" strip-json-comments "^3.1.1" +pinomin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pinomin/-/pinomin-1.0.1.tgz#a4149f137c1fe122f660f9e17e9ff799a6222802" + integrity sha512-LzeMsq1LeLXNEwQNTKVPyGjjwmAvlgr6cR30fhk3rXeoUFy79eYhNRMp34FEia18KRRAV3wuZpLyukVFBpshJg== + pirates@^4.0.1, pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"