2016-10-18 5 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'을 제거하면 오류가 발생하고 catch가 호출됩니다. 그러나 문제는 new Logger().logError(e); 작동하지 않습니다. 그것은 특정 파일에 오류를 기록하기로되어 있습니다. 그러나 아무 일도 일어나지 않고 있습니다. 그러나 오류가없는 경우 logInfo()이 올바르게 작동합니다. 콘솔에 로깅을 시도했는데 작동 중입니다. 나는 바벨 (babel)을 사용하고 있으므로 문제가 되는가? Logger는 winston logger 구현을 포함하고 logError 및 logInfo 메소드를 노출하는 클래스입니다.catch 블록에 새 객체()를 작성하십시오. js

+0

* "문제는 '새로운 Logger(). logError (e);'가 작동하지 않습니다."* 당신은 그것에 대해 자세히 설명 할 수 있습니까? –

+0

question edit –

+1

'.logError()'가 완전히 동기가 아니고'process.exit (1)'이 완료되기 전에'process.exit (1)'이 중단되어 – jfriend00

답변

0

known bug in winston이며 패치하지 않을 것 같습니다. 거기에 제공된 해결 방법 중 하나를 사용하고 모든 것이 잘 작동합니다. 여기

this.winstonlogger.log('error', logMessage,() => { 
    this.transports.file.on('flush',() => { 
    process.exit(1); 
    }); 
});