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.
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');
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');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With