2016-10-18 2 views
0
import express from 'express'; 
import route from './server/routes/route'; 
import cookieParser from 'cookie-parser'; 
import bodyParser from 'body-parser'; 
import favicon from 'serve-favicon'; 
import path from 'path'; 
import Logger from './server/logger/logger.js'; 

try { 
    const app = express(); 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({extended: false})); 
    app.use(cookieParser()); 
    app.use(favicon(path.join(__dirname, '/client/assets/favicon.ico'))); 
    app.use(express.static(path.join(__dirname, 'client'))); 
    app.use(route); 
    app.listen(3000); 
    new Logger().logInfo('Server started at port 3000'); 
} catch (e) { 
    new Logger().logError(e); 
    process.exit(1); 
} 

process.on('uncaughtException', function (err) { 
    process.exit(1); 
    new Logger().logError(err); 
}); 

ここで私はエクスプレスサーバーを作成しようとしています。私はtry catchブロックを使用しました。 import path from 'path'を削除すると、エラーが生成され、キャッチが呼び出されます。しかし、問題はnew Logger().logError(e);が機能していないことです。特定のファイルにエラーを記録することになっています。しかし何も起こっていない。しかし、エラーがなければ、logInfo()は問題なく動作しています。私はコンソールにログを記録しようとしました。私はバベルを使用しているので、それは問題ですか? Loggerはwinstonロガーの実装を含むクラスで、メソッドlogErrorとlogInfoを公開します。キャッチブロックjs内の新しいオブジェクト()を作成するjs

+0

*「ただし、問題は '新しいLogger().logError(e);' not working」です。*詳しく説明できますか? –

+0

question編集されました –

+1

'.logError()'は完全に同期的ではなく、 'process.exit(1)'は処理が完了する前に中断します。 – jfriend00

答えて

0

これはknown bug in winstonで、パッチを当てていないようです。私はそこに提供された回避策の1つを使用して、すべて正常に動作します。ここでは

this.winstonlogger.log('error', logMessage,() => { 
    this.transports.file.on('flush',() => { 
    process.exit(1); 
    }); 
}); 
関連する問題