diff --git a/packages/cli/src/Logger.ts b/packages/cli/src/Logger.ts index 2a113cb8cc892..0395946f62b59 100644 --- a/packages/cli/src/Logger.ts +++ b/packages/cli/src/Logger.ts @@ -9,22 +9,32 @@ import callsites from 'callsites'; import { basename } from 'path'; import config from '@/config'; +const noOp = () => {}; +const levelNames = ['debug', 'verbose', 'info', 'warn', 'error'] as const; + export class Logger implements ILogger { private logger: winston.Logger; constructor() { const level = config.getEnv('logs.level'); - const output = config - .getEnv('logs.output') - .split(',') - .map((output) => output.trim()); - this.logger = winston.createLogger({ level, silent: level === 'silent', }); + // Change all methods with higher log-level to no-op + for (const levelName of levelNames) { + if (this.logger.levels[levelName] > this.logger.levels[level]) { + Object.defineProperty(this, levelName, { value: noOp }); + } + } + + const output = config + .getEnv('logs.output') + .split(',') + .map((output) => output.trim()); + if (output.includes('console')) { let format: winston.Logform.Format; if (['debug', 'verbose'].includes(level)) { diff --git a/packages/core/bin/generate-known b/packages/core/bin/generate-known index 5cabfa9b801d9..df38a7ecc6d13 100755 --- a/packages/core/bin/generate-known +++ b/packages/core/bin/generate-known @@ -6,10 +6,7 @@ const { LoggerProxy } = require('n8n-workflow'); const { packageDir, writeJSON } = require('./common'); const { loadClassInIsolation } = require('../dist/ClassLoader'); -LoggerProxy.init({ - log: console.log.bind(console), - warn: console.warn.bind(console), -}); +LoggerProxy.init(console); const loadClass = (sourcePath) => { try { diff --git a/packages/core/bin/generate-ui-types b/packages/core/bin/generate-ui-types index 76ceae31fc16d..60d3bdc92fa1c 100755 --- a/packages/core/bin/generate-ui-types +++ b/packages/core/bin/generate-ui-types @@ -4,10 +4,7 @@ const { LoggerProxy, NodeHelpers } = require('n8n-workflow'); const { PackageDirectoryLoader } = require('../dist/DirectoryLoader'); const { packageDir, writeJSON } = require('./common'); -LoggerProxy.init({ - log: console.log.bind(console), - warn: console.warn.bind(console), -}); +LoggerProxy.init(console); function findReferencedMethods(obj, refs = {}, latestName = '') { for (const key in obj) { diff --git a/packages/workflow/src/LoggerProxy.ts b/packages/workflow/src/LoggerProxy.ts index 24df176fff8e0..875e1e50a0ec1 100644 --- a/packages/workflow/src/LoggerProxy.ts +++ b/packages/workflow/src/LoggerProxy.ts @@ -22,21 +22,21 @@ export function log(type: LogTypes, message: string, meta: object = {}) { // Convenience methods below export function debug(message: string, meta: object = {}) { - getInstance().log('debug', message, meta); + getInstance().debug(message, meta); } export function info(message: string, meta: object = {}) { - getInstance().log('info', message, meta); + getInstance().info(message, meta); } export function error(message: string, meta: object = {}) { - getInstance().log('error', message, meta); + getInstance().error(message, meta); } export function verbose(message: string, meta: object = {}) { - getInstance().log('verbose', message, meta); + getInstance().verbose(message, meta); } export function warn(message: string, meta: object = {}) { - getInstance().log('warn', message, meta); + getInstance().warn(message, meta); }