log4js-node / log4js-node

A port of log4js to node.js

Home Page:https://log4js-node.github.io/log4js-node/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TypeError: this.isLevelEnabled is not a function

kaikaibenkai opened this issue · comments

commented

message:

TypeError: this.isLevelEnabled is not a function
    at console.log (D:\site\fb-api\node_modules\log4js\lib\logger.js:154:21)
    at console.Logger.<computed> [as error] (D:\site\fb-api\node_modules\log4js\lib\logger.js:235:10)
    at printFatalErrorUponExit (D:\site\fb-api\node_modules\@cspotcode\source-map-support\source-map-support.js:722:13) 
    at process.emit.sharedData.processEmitHook.installedValue [as emit] (D:\site\fb-api\node_modules\@cspotcode\source-map-support\source-map-support.js:753:9)
    at process.exit (node:internal/process/per_thread:189:15)
    at process.emit.sharedData.processEmitHook.installedValue [as emit] (D:\site\fb-api\node_modules\@cspotcode\source-map-support\source-map-support.js:750:17)
    at process._fatalException (node:internal/process/execution:167:25)

source:

import * as log4js from 'log4js';
import { env } from 'process';
const production = env.NODE_ENV === 'production'; // it will be `false`
let appenders: Record<string, log4js.Appender> = {
  console: {
    type: 'console',
  },
};
/* if (production) {
  appenders.qcloud = {
    type: 'qcloudLogger.js',
  };
} */
log4js.configure({
  appenders,
  categories: {
    default: {
      appenders: production ? ['qcloud'] : ['console'], // it will be `['console']`
      level: production ? 'ERROR' : 'DEBUG',
    },
  },
});
const logger = log4js.getLogger();
console.trace = logger.trace;
console.debug = logger.debug;
console.log = logger.log;
console.info = logger.info;
console.warn = logger.warn
console.error = logger.error;
export default logger;

Hi, you need to bind (from FAQ - What happened to replaceConsole - it doesn’t work any more?):

console.trace = logger.trace.bind(logger);
console.debug = logger.debug.bind(logger);
console.log   = logger.log.bind(logger);
console.info  = logger.info.bind(logger);
console.warn  = logger.warn.bind(logger);
console.error = logger.error.bind(logger);

Hi @kaikaibenkai, did it resolve the issue?

commented

Hi @kaikaibenkai, did it resolve the issue?

Yes. I'm sorry I forgot to close this issue.