Reputation: 8952
I want to write the logs into different files.
const log4js = require('log4js');
log4js.configure({
appenders: { integra: { type: 'file', filename: './logs/doc.log' } },
categories: { default: { appenders: ['doc'], level: 'error' } }
});
const logger = log4js.getLogger('doc');
module.exports = logger
As per the code above, I can configure logs one time only. But I want to write a log file dynamcally for every log. In above case, I can write a single file only. I need a way by which I can write a new log file. I want to write multiple logs files at different paths.
Upvotes: 4
Views: 4165
Reputation: 4586
You can create multiple appenders and categories, and get the logger accordingly before writing to it. The following would create three different files.
const log4js = require('log4js');
log4js.configure({
appenders: {
nasty: { type: 'file', filename: 'nasty.log' },
sleek: { type: 'file', filename: 'sleek.log' },
tracer: { type: 'file', filename: 'tracer.log' },
},
categories: {
default: {
appenders: ['nasty'], level: 'error'
},
sleek: {
appenders: ['sleek'], level: 'info'
},
tracer: {
appenders: ['tracer'], level: 'trace'
}
}
});
const nastyLogger = log4js.getLogger('nasty');
nastyLogger.error(new Error('This gets logged in nastly logger'));
nastyLogger.debug('This will not be logged in nasty logger');
const sleekLogger = log4js.getLogger('sleek');
sleekLogger.info('This will be logged in sleek logger');
sleekLogger.debug('This will not be logged in sleek logger');
const tracerLogger = log4js.getLogger('tracer');
tracerLogger.info('This will be logged in tracer logger');
tracerLogger.debug('This will also be logged in tracer logger');
Upvotes: 6
Reputation: 566
Use the MultiFile Appender to dynamically write logs to multiple files , Your log4js config would look something like this :
appenders: { integra: { type: 'multiFile', base: 'logs/', property: 'prop', extension: '.log'} },
where :
And here is an Example used for creating log file for each user :
const log4js = require('log4js');
const uuidv1 = require('uuid/v1'); //used for generating random string
log4js.configure({
appenders: {
everything: {
type: 'multiFile', base: 'logs/', property: 'userID', extension: '.log'
}
},
categories: {
default: { appenders: [ 'everything' ], level: 'debug'}
}
});
const userLogger = log4js.getLogger('user');
userLogger.addContext('userID', uuidv1());
userLogger.info('New file created');
userLogger.addContext('userID', uuidv1());
userLogger.info('New file created');
Upvotes: 2