I'm testing my app with jest
but there is a small problem related with my logger: its keeps sending console logs while testing routes.
Im dealing with a basic winston
configuration for my logger:
logger.config.js
const winston = require('winston');
const { env } = require('./variables.config.js');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
if (env === 'development') {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
logger.stream = {
write: (message) => {
logger.info(message.trim());
}
};
module.exports = logger;
index.js
const app = require('./config/express.config');
const logger = require('./config/logger.config');
const server = app.listen(port, logger.info(`Running on port ${port} (${env})`));
module.exports = server;
I'm using server
on my tests as well as supertest
:
some.test.js
const request = require('supertest');
const app = require('../../config/express.config');
...and, yeah... Every single request shows a log on my console which I don't want. How can I prevent my logger to display messages while testing my app?
Thanks in advance!