I am a beginner in Node JS. I am working on winston log file. I am facing an issue with Winston logger (Node JS). When I run the command "npm start" it shows some error level logs in both the error log file and info log file at an initial run. For all other cases, it works fine.
Also, the warning file shows both error and info level messages. In debug file, there also shows both the error and debug messages all the time. What can be the reason for it? How to log messages in the right manner such a way that error messages logs in the error file, info messages in the info file, warning messges in warn file and debug message in debug file. Please refer to the below code.
Code
const { createLogger, transports, format } = require('winston');
const { combine, timestamp, prettyPrint, printf } = format;
const customFormat = printf(({ level, message, timestamp }) => {
if (!message.includes('&')) {
return `${timestamp} ${level}: ${message}`;
} else {
return `${timestamp} - ${message.split('&')[0]} - ${level}: ${message.split('&')[1]}`;
}
});
const logger = createLogger({
format: combine(
timestamp(),
// prettyPrint(),
customFormat
),
transports: [
new transports.File({
filename: `${__dirname}/log/error.log`,
level: 'error'
}),
new transports.File({
filename: `${__dirname}/log/info.log`,
level: 'info'
}),
new transports.File({
filename: `${__dirname}/log/warn.log`,
level: 'warn'
}),
new transports.File({
filename: `${__dirname}/log/debug.log`,
level: 'debug'
}),
new transports.Console({
timestamp: true
}),
],
exceptionHandlers: [
new transports.Console({
json: false,
timestamp: true
}),
new transports.File({
filename: `${__dirname}/log/exceptions.log`,
json: false
})
],
exitOnError: false
});
module.exports = logger;