我在我的开发机器上用Node.js服务器设置了一个Winston日志记录器。根据dbState,我更改了日志文件的名称:
const { createLogger, transports, format } = require('winston');
const keys = require('../config/keys');
const dbState = keys.db.state;
const customFormat = format.combine(format.timestamp(), format.printf((info) => `${info.timestamp} [${info.level.padEnd()}]: ${info.message}`));
const logger = createLogger({
format: customFormat,
transports: [
new transports.File({ filename: `${dbState}-error.log`, level: 'error' }),
// After it reaches 10MB, it will create a new file and start writing to that
new transports.File({ filename: `${dbState}-combined.log`, maxsize: 10000000 }),
],
});
logger.stream = {
write(message, _encoding) {
console.log(message.trim());
logger.info(message.trim());
},
};
module.exports = logger;
我现在已经把这个更新推到Heroku了,那里的日志文件可能正在增加。是否有访问此日志文件的方法?
2条答案
按热度按时间ekqde3dh1#
您可以使用Winston,但要避免其文件传输。基于文件的日志记录是Heroku上的一个反模式:
所有的dynos都会发生循环,包括一次性的dynos,所以dynos最多运行24小时+216分钟。
Heroku treats logs as event streams,所以考虑使用Winston的Console传输。这应该会使所有dynos的日志显示在标准事件流中。
如果你愿意,你可以使用一个日志插件,如Logtail或Papertrail来查询你的日志下游。
s6fujrry2#
是的,您可以通过命令行工具访问Heroku日志文件。
一旦你有一个会话运行,你应该能够运行
ls
或cat
,因为你想读取文件名。此外,一旦你完成了,一定要exit
。