温斯顿没有为我的Heroku MERN应用编写日志,尽管在本地运行良好

时间:2018-09-10 13:06:33

标签: node.js heroku logging winston

我有一个MERN应用程序-React前端,Express / Mongoose后端-在本地运行良好。我将后端部署到Heroku,将Surge和Winston的前端不再正常运行。 那就是:尽管它在本地(本地主机)做得很完美,但它根本不写日志文件。

Heroku上的Node版本是8.11.4,而本地(MacOS)是10.8.0。 Heroku是通过https而不是我的运行http的本地主机调用的。这些是我看到的唯一区别。

我尝试指定__dirname,并尝试删除文件夹引用(即,将文件放在目录logs中,但是没有日志文件写入任何地方。

我的记录器模块如下

const {createLogger, format, transports} = require('winston');
const {combine, timestamp, align, colorize, printf} = format;

const path = require('path')

const myFormat = printf(info => {
  return `${info.timestamp} [${info.level}: ${info.message}]`;
});


const logger = createLogger({
  level: 'debug',
  format: combine(
    colorize(),
    timestamp(),
    align(),
    myFormat
  ),
  transports: [
     new transports.File({maxsize: 500000, filename: path.join(__dirname,'logs/error.log'), level: 'error'}),
    new transports.File({maxsize: 500000, filename:  path.join(__dirname,'logs/combined.log')})
  ]
})

module.exports = logger

同样,令人沮丧的是,这一切都在本地完美运行。感谢您协助我们进行追踪!

2 个答案:

答案 0 :(得分:0)

Heroku没有本地存储。使用邮件传输从服务器获取错误。或者,您可以使用Heroku服务来监视您的应用程序。像:Addons-Loggers

答案 1 :(得分:0)

const logger = winston.createLogger({
  transports: [
    ...

    // Add following code for getting logs in console as well
    new winston.transports.Console(),
  ]
});