How to log into file using log4js when I get a error response?

1.6k Views Asked by At

I want to log into some file when I only get a error response from client. And I want to print messages on terminal when I get the others. So, I'm using express and log4js like that.

Here is some part of my code.

const log4js = require('log4js'),
  express = require('express'),
  app = express();

log4js.configure({
  appenders: [
    {type: 'console'},
    {type: 'file', filename: 'logs/logs.log', category: 'file'}
  ]
});

const fileLogger = log4js.getLogger('file'),
  consoleLogger = log4js.getLogger('console');

fileLogger.setLevel('ERROR');

app.enable('trust proxy');
app.use(log4js.connectLogger(fileLogger, { format: ':method :url' }));
app.use(log4js.connectLogger(consoleLogger, { level: 'auto', format: ':method :url' }));

I expected that error response is filtered by fileLogger then a log message is written into logs.log and the others are filtered by consoleLogger then the message is printed on terminal but not.

Is there a good way to solve it using connectLogger?

2

There are 2 best solutions below

0
On

I referred to this and I knew that It's impossible to use connectLogger multiple times for express routing.

0
On

Call different category logger in order to show log to different action.

var logger = log4js.getLogger('file');

User connectLogger only once in app.js!