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 решило проблему.

Другие вопросы по тегам