Winston在控制台中登录,但不在日志文件中

时间:2018-12-20 05:19:32

标签: node.js logging 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

温斯顿版  3.1.0

1 个答案:

答案 0 :(得分:2)

您需要确保“ logs”文件夹存在。 Winston不会处理不存在的文件夹,也不会发出任何警告或错误。

您可以将以下代码放入server.js中

var fs = require( 'fs' );
var logDir = 'logs';
if ( !fs.existsSync( logDir ) ) {
   fs.mkdirSync( logDir );
}
winston.info('Hey NODE');

使用winston.js内部的绝对文件夹路径可以解决此问题。