我的代码:
where customerOrders.Where(order => selectedProducts.Contains(order.ProductID))
.Select(order => order.ProductID).Distinct().Count() == selectedCount
输出:
import winston from 'winston';
Meteor.startup(() => {
const env = process.env.NODE_ENV || 'development';
const tsFormat = () => (new Date()).toLocaleTimeString();
const logDir = 'log';
const logger1 = new (winston.Logger)({
transports: [
// colorize the output to the console
new (winston.transports.Console)({
timestamp: tsFormat,
colorize: true,
level: 'info',
}),
new (winston.transports.File)({
filename: `${logDir}/results.log`,
timestamp: tsFormat,
level: env === 'development' ? 'debug' : 'info',
}),
],
});
logger1.info('Hello world');
//logger1.warn('Warning message');
//logger1.debug('Debugging info');
});
甚至没有创建results.log
更新:当我只使用没有路径的文件名时,它可以工作)。
相关但没有帮助解决:
Node.js, can't open files. Error: ENOENT, stat './path/to/file'
有什么问题?
答案 0 :(得分:0)
Winston实际上并没有创建你想要日志文件的目录,这就是你得到ENOENT
的原因。
(我对Meteor不太熟悉,但以下说明适用于“普通”Node.js)
您可以在实例化Winston之前手动创建目录,以确保它存在,使用fs.mkdirSync
,尽管这只会深入一级(如果路径中有任何内容,则不会创建中间目录)
还有mkdirp.sync()
, 创建中间目录。
使用同步版本更容易一些,因为它只是在应用程序启动期间发生一次,所以它不是瓶颈。