2

Winston ロギング ライブラリを使用するノード アプリケーションがあり、Winston ファイル トランスポート コードで fs.stat を呼び出すと失敗します。問題のコードは次のとおりです (file.js の 515 ~ 536 行目あたり):

console.log("fullname = " + fullname);

fs.stat(fullname, function (err, stats) {
  console.log("CALLBACK");
  if (err) {
    if (err.code !== 'ENOENT') {
      return self.emit('error', err);
    }

    return createAndFlush(0);
  }

  if (!stats || (self.maxsize && stats.size >= self.maxsize)) {
    //
    // If `stats.size` is greater than the `maxsize` for
    // this instance then try again
    //
    return checkFile(self._getFile(true));
  }

  createAndFlush(stats.size);
});

console.log 呼び出しを追加しました。最初のロギング イベントで最初の出力が表示されますが、2 番目のログ イベントには到達しません。

アプリケーションは、Windows 7 32 ビットの Node.js 0.10.10 で実行されています。Linuxで動作します。アプリケーションの http サーバーは引き続きイベントを処理するため、メインのイベント ループは問題ありません。

次の短いアプリケーションは、存在するファイルと存在しないファイルに対して正しく実行されます。

fs = require('fs');

fs.stat('c:\\apiserver\\v8.log', function(err, st) {
    console.dir(err);
    console.dir(st);
});
4

1 に答える 1