2012-06-07 3 views
1

Connect (Express는 물론)의 일부인 Logger 미들웨어를 사용할 때 응답에 플래그를 설정하거나 특정 요청에 대한 로깅을 사용하지 못하게하고 싶습니다. Express (또는 Connect)에서 조건부 로깅을 억제 할 수 있습니까?

나는 말함으로써 그것을 할 관리 : 다음

res.doNotLog = true; 

과 깊은 logger.js (연결 모듈의 일부)에, 내가 올바른 장소에

if(res.doNotLog) return; 

을 넣어. 물론 모듈 자체에서 코드를 수정하고 싶지는 않습니다. 모듈을 해킹하지 않아도 동일한 문제가 발생할 수있는 방법이 있습니까?

편집 :

이는 일이 :

var app = _express.createServer(); 

// set 'hello' routing...note that this is before middleware 
// so it won't be logged 
app.get('/sayhello', function(req, res) {res.send("hey");}); 

// configure middleware: logging, static file serving 
app.configure(function() { 
    app.use(_express.logger()); 
    app.use(_express.static(__dirname + '/www')); 
    }); 

// set 'goodbye' routing...note that this is after middleware 
// so it will be logged 
app.get('/saygoodbye', function(req, res) {res.send("later...");}); 
+0

이것은 나를 위해 작동하지 않았고 초기 요청을 기록하는 것처럼 보였습니다. – user1071182

답변

0

가장 눈에 띄는 점은 로거 전에 해당 요청에 대한 처리기를 넣어하는 것입니다. 이것은 순수한 Connect에서 쉽습니다. 많은 라우터 코드가 경로간에 공유되기 때문에 Express에서이를 수행하는 방법을 모릅니다. 그러한 요청이 거의 없다면, 스택 스타일에서 연결 스타일을 app.router보다 먼저 처리 할 수 ​​있습니다.

+0

니스. 그것은 작동합니다. – rob

+0

시간이 있다면, 어떻게했는지 우리에게 보여 주면 좋을 것입니다. 그것은이 문제를 비슷한 문제가있을 때 다른 사람들에게 지적 할 수있는 종류의 문제로 만듭니다. 또한, 내가 어떻게하는지에 대한 일반적인 아이디어가 있지만 실제로 구현이 더 좋을 수도 있습니다. – ebohlman

+0

확실한 것, 끝났습니다. 그 트릭은 app.configure()를 _express.createServer()에서 분리하는 것 같지만, 이미 app.get()에 대한 호출을 이동시키는 문제였습니다. :) – rob