2017-07-17 10 views
0
をスロー

マイコード:ウィンストンロガーはENOENT

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をしても作成されません

I20170717-11:39:11.027(2)? 11:39:10 - info: Hello world 
W20170717-11:39:11.150(2)? (STDERR) 
W20170717-11:39:11.151(2)? (STDERR) events.js:72 
W20170717-11:39:11.152(2)? (STDERR)   throw er; // Unhandled 'error' event 
W20170717-11:39:11.152(2)? (STDERR)    ^
W20170717-11:39:11.153(2)? (STDERR) Error: ENOENT, open 'log/results.log' 

更新:私はせずにファイル名のみを使用しますパスしてから動作します)。

関連

ではなく、解決の助け:
Node.js, can't open files. Error: ENOENT, stat './path/to/file'

問題は何ですか?

+1

ディレクトリchmodを確認するか、手動でファイルを作成してみてください。何か変更がありますか? –

+0

'log'ディレクトリはありますか? – robertklep

+0

@robertklep nope – Gobliins

答えて

0

Winstonは実際にログファイルを保存するディレクトリを作成しないため、ENOENTが表示されます。

が、(私は流星と非常に慣れていないんだけど、次の手順は、「プレーン」のNode.js上で動作)あなたは、ウィンストンは、それが存在することを確認するためにインスタンス化fs.mkdirSyncを使用する前に、ディレクトリを手動で作成することができます

それは1つのレベルの深さだけになります(パスに何かがある場合、中間ディレクトリは作成されません)。

mkdirp.sync()もあります。です。中間のディレクトリを作成します。

同期バージョンを使用するのは少し簡単です。アプリケーションの開始時に1回だけ発生する操作なので、ボトルネックにはなりません。

関連する問題