diff --git a/src/lib/logger.ts b/src/lib/logger.ts index 17ee1bf17..9318484d2 100644 --- a/src/lib/logger.ts +++ b/src/lib/logger.ts @@ -1,42 +1,19 @@ /* eslint-disable */ -import { isObject, pad } from './utils'; +import { pad } from './utils'; import { fillInMsgTemplate } from './logger/parser'; +import {calculateLevel, levels, subsystems} from "./logger/levels"; const cluster = require('cluster'); const Logger = require('bunyan'); const Error = require('http-errors'); const Stream = require('stream'); -const { red, yellow, cyan, magenta, green, white, black, blue } = require('kleur'); +const { red, yellow, cyan, magenta, green, white } = require('kleur'); const pkgJSON = require('../../package.json'); const _ = require('lodash'); const dayjs = require('dayjs'); -/** - * Match the level based on buyan severity scale - * @param {*} x severity level - * @return {String} security level - */ -function calculateLevel(x) { - switch (true) { - case x < 15: - return 'trace'; - case x < 25: - return 'debug'; - case x < 35: - return 'info'; - case x == 35: - return 'http'; - case x < 45: - return 'warn'; - case x < 55: - return 'error'; - default: - return 'fatal'; - } -} - /** * A RotatingFileStream that modifes the message first */ @@ -161,17 +138,6 @@ function setup(logs) { // this part was converted to coffee-script and back again over the years, // so it might look weird -// level to color -const levels = { - fatal: red, - error: red, - warn: yellow, - http: magenta, - info: cyan, - debug: green, - trace: white, -}; - let max = 0; for (const l in levels) { if (Object.prototype.hasOwnProperty.call(levels, l)) { @@ -193,20 +159,7 @@ for (const l in levels) { } const finalMessage = fillInMsgTemplate(msg, obj, colors); - const subsystems = [ - { - in: green('<--'), - out: yellow('-->'), - fs: black('-=-'), - default: blue('---'), - }, - { - in: '<--', - out: '-->', - fs: '-=-', - default: '---', - }, - ]; + const sub = subsystems[colors ? 0 : 1][obj.sub] || subsystems[+!colors].default; if (colors) { diff --git a/src/lib/logger/levels.ts b/src/lib/logger/levels.ts new file mode 100644 index 000000000..5517083d5 --- /dev/null +++ b/src/lib/logger/levels.ts @@ -0,0 +1,51 @@ +import { yellow, green, black, blue, red, magenta, cyan, white } from 'kleur'; + +// level to color +export const levels = { + fatal: red, + error: red, + warn: yellow, + http: magenta, + info: cyan, + debug: green, + trace: white, +}; + +/** + * Match the level based on buyan severity scale + * @param {*} x severity level + * @return {String} security level + */ +export function calculateLevel(x) { + switch (true) { + case x < 15: + return 'trace'; + case x < 25: + return 'debug'; + case x < 35: + return 'info'; + case x == 35: + return 'http'; + case x < 45: + return 'warn'; + case x < 55: + return 'error'; + default: + return 'fatal'; + } +} + +export const subsystems = [ + { + in: green('<--'), + out: yellow('-->'), + fs: black('-=-'), + default: blue('---'), + }, + { + in: '<--', + out: '-->', + fs: '-=-', + default: '---', + }, +]; diff --git a/test/unit/modules/logger/parser.spec.ts b/test/unit/modules/logger/parser.spec.ts index cc0118cce..1b528f43c 100644 --- a/test/unit/modules/logger/parser.spec.ts +++ b/test/unit/modules/logger/parser.spec.ts @@ -8,7 +8,13 @@ jest.mock('kleur', () => { // we emulate colors with this pattern color[msg] return { green: r => `g[${r}]`, - red: r => `r[${r}]` + yellow: r => `y[${r}]`, + black: r => `b[${r}]`, + blue: r => `bu[${r}]`, + red: r => `r[${r}]`, + cyan: r => `c[${r}]`, + magenta: r => `m[${r}]`, + white: r => `w[${r}]`, } });