mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-01 02:43:59 +00:00
use pinomin package
This commit is contained in:
@@ -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.
|
After restarting DbGate, you could use your new plugin from DbGate.
|
||||||
|
|
||||||
## Logging
|
## 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.
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
"ncp": "^2.0.0",
|
"ncp": "^2.0.0",
|
||||||
"node-cron": "^2.0.3",
|
"node-cron": "^2.0.3",
|
||||||
"on-finished": "^2.4.1",
|
"on-finished": "^2.4.1",
|
||||||
|
"pinomin": "^1.0.1",
|
||||||
"portfinder": "^1.0.28",
|
"portfinder": "^1.0.28",
|
||||||
"simple-encryptor": "^4.0.0",
|
"simple-encryptor": "^4.0.0",
|
||||||
"ssh2": "^1.11.0",
|
"ssh2": "^1.11.0",
|
||||||
|
|||||||
@@ -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 processArgs = require('./utility/processArgs');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { logsdir, setLogsFilePath, getLogsFilePath } = require('./utility/directories');
|
const { logsdir, setLogsFilePath, getLogsFilePath } = require('./utility/directories');
|
||||||
const platformInfo = require('./utility/platformInfo');
|
const { createLogger } = require('pinomin');
|
||||||
|
|
||||||
if (processArgs.startProcess) {
|
if (processArgs.startProcess) {
|
||||||
setLoggerName(processArgs.startProcess.replace(/Process$/, ''));
|
setLoggerName(processArgs.startProcess.replace(/Process$/, ''));
|
||||||
@@ -30,7 +30,7 @@ function configureLogger() {
|
|||||||
setLogsFilePath(logsFilePath);
|
setLogsFilePath(logsFilePath);
|
||||||
setLoggerName('main');
|
setLoggerName('main');
|
||||||
|
|
||||||
const logger = createPinoLikeLogger({
|
const logger = createLogger({
|
||||||
base: { pid: process.pid },
|
base: { pid: process.pid },
|
||||||
targets: [
|
targets: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"json-stable-stringify": "^1.0.1",
|
"json-stable-stringify": "^1.0.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
|
"pinomin": "^1.0.1",
|
||||||
"uuid": "^3.4.0"
|
"uuid": "^3.4.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
import { createPinoLikeLogger, ILogger } from './pinomin';
|
import pinomin, { Logger } from 'pinomin';
|
||||||
|
|
||||||
let _logger: ILogger;
|
let _logger: Logger;
|
||||||
let _name: string = null;
|
let _name: string = null;
|
||||||
const defaultLogger: ILogger = createPinoLikeLogger({
|
const defaultLogger: Logger = pinomin({
|
||||||
base: { pid: global?.process?.pid },
|
base: { pid: global?.process?.pid },
|
||||||
targets: [{ type: 'console', level: 'info' }],
|
targets: [{ type: 'console', level: 'info' }],
|
||||||
});
|
});
|
||||||
|
|
||||||
export function setLogger(value: ILogger) {
|
export function setLogger(value: Logger) {
|
||||||
_logger = value;
|
_logger = value;
|
||||||
}
|
}
|
||||||
export function setLoggerName(value) {
|
export function setLoggerName(value) {
|
||||||
_name = value;
|
_name = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getLogger(caller?: string): ILogger {
|
export function getLogger(caller?: string): Logger {
|
||||||
let res = _logger || defaultLogger;
|
let res = _logger || defaultLogger;
|
||||||
if (caller) {
|
if (caller) {
|
||||||
const props = { caller };
|
const props = { caller };
|
||||||
|
|||||||
@@ -19,4 +19,3 @@ export * from './computeDiffRows';
|
|||||||
export * from './preloadedRowsTools';
|
export * from './preloadedRowsTools';
|
||||||
export * from './ScriptWriter';
|
export * from './ScriptWriter';
|
||||||
export * from './getLogger';
|
export * from './getLogger';
|
||||||
export * from './pinomin';
|
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
@@ -8737,6 +8737,11 @@ pino-pretty@^9.1.1:
|
|||||||
sonic-boom "^3.0.0"
|
sonic-boom "^3.0.0"
|
||||||
strip-json-comments "^3.1.1"
|
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:
|
pirates@^4.0.1, pirates@^4.0.4:
|
||||||
version "4.0.5"
|
version "4.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
|
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
|
||||||
|
|||||||
Reference in New Issue
Block a user