2014-06-15 1 views
1

Morgan과 Express.js를 사용하고 있으며 Morgan이 오류 302 (리디렉션 됨)을 반환하는 요청을 로깅하기 때문에 내 미들웨어에 문제가 있다고 생각합니다. 미들웨어는 오류를 포착하여 오류 페이지로 리디렉션합니다.Express.js 전용 로깅 실패한 Morgan Logger

저는 모든 미들웨어 재즈를 Express.js에 새로 소개했습니다. 그래서 어떤 도움을 주시면 감사하겠습니다. 감사!

var http = require('http') 
    , express = require('express') 
    , app = express() 
    , logger = require('morgan'); 

app.use(express.static(__dirname + '/public')); 
app.use(logger()); 

var server = http.createServer(app); 
server.listen(8888); 

// Handle 404 
app.use(function(req, res) { 
    res.status(404).redirect('/error/404.html'); 
}); 

// Handle 500 
app.use(function(error, req, res, next) { 
    res.status(500).redirect('/error/500.html'); 
}); 
+0

관련 html 오류 파일을 렌더링/전송하는 대신 리디렉션하는 이유는 무엇입니까? 'res.status (500) .render ('505_template'); '등과 같은 것? –

+0

[시도해 보았습니다.] (http://stackoverflow.com/questions/24210130/error-404-page-not-working-with-express) :/내 문제는 무엇인지 알고 있습니까? 'app.render()'에 대한 인수는 .html 파일에 대한 경로입니다. 맞습니까? @MattBakaitis – jczimm

답변

5

'작동시키기'라는 측면에서, 아래 코드는 404 용으로이 작업을 수행합니다.

나는 다른 응답 코드와 관련하여 아무 것도 대답하지 않고 남겨 두었습니다.

  1. 내가 'http'에 의존성을 제거하고 내가 이동
  2. 정말 필요하지 않습니다 그 때문에 var server = http.createServer(app); : :)

    A I가 변경된 것을 요약을 작동하도록 얻기 app.listen 결국 ... 모든 Express 구성이 완료된 후 수신 대기합니다. 우리는 단지이 내 시스템에 근무

주위 상태의 물건을 보내는 이후

  • 은 내가 .sendfile() 방법 대신 .redirect()을 사용했다. 코드 또는 문제에 대한 질문이있는 경우 의견을 남기면 도움이 될 것입니다.하지만 의견에 기적을 약속 할 수는 없습니다. :)

    var express = require('express'); 
    var app = express(); 
    var logger = require('morgan'); 
    
    // edited, moving `app.use(logger());` first so it can log everything...  
    app.use(logger()); 
    app.use(express.static(__dirname + '/public')); 
    
    
    // Handle 404 
    app.use(function(req, res, next) { 
        res.status(404).sendfile('./error/404.html'); 
    }); 
    
    app.listen(8888); 
    

    옆 빠른 :

    내 생각 엔 당신의 코드에서 몇 가지 문제가 많은 특급 튜토리얼/가이드 v.3.x 용으로 작성된 사실에 근거한다는 것이다

    하지만, v.4.x의 변경 사항은 여전히 ​​효과적 일 수있는 것을 충분히 쉽게 파악할 수 없을 정도로 충분히 빠릅니다.

    예를 들어, 표현식 v.4.x 응용 프로그램에서는 morgan 만 사용하고 v.3.x app/example/tutorial에서 가져온 코드는 여러 가지로 보입니다. 시작했을 때 익스프레스가 v.2.x에서 v.3.x로 옮겨 가면서 같은 일이 일어났습니다 ... 그래. 나는 너의 고통을 느낀다.

    +0

    사려 깊고 완전한 답변을 해주셔서 감사합니다. 그러나 오류 페이지는 이제 작동하지만 로거 문제에는 도움이되지 않습니다. 여전히 404 오류 (아마도 다른 오류 일 수도 있음)로만 요청을 기록합니다. 그 부분이 시스템에서 작동 했습니까? @MattBakaitis – jczimm

    +0

    미안 ... 미들웨어의 순서가 중요합니다. 나는 대답을 편집했다. 로거가 먼저 있어야합니다. –

    +0

    아, 이제 작동합니다. 정말 고맙습니다! @MattBakaitis – jczimm