Winston регистрируется в консоли, но не в лог-файлах
Я использую Winston для входа в мой проект. Я вижу журналы в консоли, но в файлах журналов регистрации нет.
Файл Winston.js
var appRoot = require('app-root-path');
var winston = require('winston');
const {transports, createLogger, format} = require('winston');
winston.addColors( winston.config.npm.colors );
const logger = winston.createLogger({
level: 'info',
format: format.combine(
format.timestamp({format:'MM-YY-DD hh:mm:ss a'}),
format.json(),
),
transports: [
new winston.transports.File({ filename: './logs/error.log', level: 'error' }),
new winston.transports.File({ handleExceptions: true,colorize:true,
json: true,filename: './logs/app.log',
})
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
module.exports = logger;
Код Server.js
var morgan = require('morgan');
var winston = require('./server/config/winston');
Узловая версия 8.11.3
Winston версия 3.1.0
1 ответ
Решение
Вы должны убедиться, что папка 'logs' существует. Уинстон не заботится о несуществующей папке и не дает никаких предупреждений или ошибок.
Вы можете поместить следующий код в ваш server.js
var fs = require( 'fs' );
var logDir = 'logs';
if ( !fs.existsSync( logDir ) ) {
fs.mkdirSync( logDir );
}
winston.info('Hey NODE');
Использование абсолютного пути к папке внутри winston.js решило проблему.